
    z-Phv                       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	 d dlZd dlmZ 	 ej        Zn# e$ r	 d dlmZ Y nw xY wn# e$ r dZY nw xY wd dlmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&c mZ' d dl!m&c m(Z) d dl*m+Z+ d dl,Z-	 d dl,m.Z/ n# e$ r Y nw xY w	 d dl0Z1d dl2mZ3 d	d
l4m5Z5m6Z6 n# e$ r Y nw xY wej7        j0        Z8ddZ9	 	 	 	 	 ddZ:ddZ;	 	 ddZ<ddZ= G d d          Z> G d d          Z?ej7        @                    dg d          d             ZAej7        @                    dg d          d             ZB G d d          ZC G d d          ZD G d d           ZE G d! d"          ZF G d# d$          ZG G d% d&          ZHd' ZId( ZJ G d) d*          ZKd+ ZLd, ZMej7        @                    d-d.gd/gf          d0             ZNd1 ZOd2 ZPd3 ZQ ejR         e'jS        e'jT                            d4             ZUd5 ZVd6 ZWd7 ZXd8 ZYd9 ZZd: Z[d; Z\d< Z]d= Z^d> Z_d? Z`d@ ZadA ZbdB ZcdC ZddD ZedE ZfdF ZgdG Zhej7        @                    dH e-ji                    dIf e-jj                    dJf e-jk                    dKf e-jl                    dLf e-jm                    dMf e-jn                    dNf e-jo                    dOf e-jp                    dPf e-jq                    dQf e-jr                    dRf e-js                    dSf e-jt                    dTf e-ju                    dUf e-jv                    dVf e-jw                    dVf e-jx                    dWf e-jx        dXY          dWf e-jy                    dZf e-jz         e-jz         e-jl                                        d[f e-j{        d\d]          d^f e-j|        d_          d`f e-j|        dadb          dcf e-j}        dd          def e-j~        da          defg          df             Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu ZddvZdw Zdx Zdy Zdz Zd{ Zd| Z G d} d~e-j                  ZddZd Zd Zd Z G d de-j                  Zd Zd Zd Zd Zd Zej7        @                    ddddgg          d             Zd Zej7        j0        d             Zd Zd Zd Zd Zd Zej7        j.        d             Zd Zej7        @                    dg d          ej7        @                    dddg          ej7        @                    d e	dd	d	           e	dd	d	          g          d                                     Zd Zej7        j        d             Zd Zd Zd Zd Zd Zd Zd Zd Zej7        j        d             Zd Zej7        j        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                    t          j        i dt          j        | t          j                  dt          j        | t          j                  dt          j        | t          j                  dt          j        | t          j                  dt          j        | t          j                  dt          j        | t          j                  dt          j        | t          j	                  d	t          j        | t          j
                  d
t          j        | t          j                  dt          j        | t          j                  dt          j                            |           dk    dt          j        d| d          dt          j        d| d          dt          j        d| d          dt          j        d| d          dt          j        d| d          dt          j        d| d          t          j        d| d          t          j        d| d          d t          |           D             d gd t          | dz
            D             z   d gz   dg| z  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                 ,    g | ]}t          |          S  str.0xs     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/test_pandas.py
<listcomp>z%_alltypes_example.<locals>.<listcomp>\   s    ,,,1A,,,    c                 ,    g | ]}t          |          S r+   r,   r.   s     r1   r2   z%_alltypes_example.<locals>.<listcomp>]   s    #D#D#DqCFF#D#D#Dr3       )r(   r)   r-   str_with_nulls	empty_str)pd	DataFramenparanger   r   r   r   r   r   r   r    r!   randomrandnrangesizes    r1   _alltypes_examplerB   C   s   < 4rx000")D	222 	")D	222 	")D	222	
 		$bh/// 	4rx000 	4rx000 	4rx000 	29T444 	29T444 		%%) 	ry!:D'68 8 8 		";T(8: : :  		";T(8: : :!$ 		";T(8: : :%( 	")At3CDDD)* 	29Q4EFFF+, 9Q4EFFF9Q4EFFF,,d,,,&#D#DE$(OO#D#D#DDvMTD[5     r3   FTc                 4   |rt           j        nt           j        }|                    | |||rdnd          }	|	                    |          }
|r|	j                            |          sJ |G| }|j        D ]=}||         j        dk    r*||         	                    t          j        d i          ||<   >t          j                    5  t          j        ddt                     t!          j        |
|||rdnd	
           d d d            d S # 1 swxY w Y   d S )Nr5   r   )schemapreserve_indexnthreadsuse_threadsobjectignoreelementwise comparison failedequivF)check_dtypecheck_index_type)paRecordBatchTablefrom_pandas	to_pandasrD   equalscolumnsr   replacer;   nanwarningscatch_warningsfilterwarningsDeprecationWarningtmassert_frame_equal)dfexpectedrH   expected_schemarM   rD   rE   as_batchklasstableresultcols               r1   _check_pandas_roundtriprf   b   s   
 '4BNNBHEb-;,7'>qqQ  @ @E ___55F 4 |""?33333# 	F 	FC}"h.. ( 5 5rvtn E E		 	"	" = =57I	K 	K 	K
fhK;I 1;5:	= 	= 	= 	== = = = = = = = = = = = = = = = = =s   8DDDc                     t          j        | d|          }|||}||j        |k    sJ t          j        |                                | j                  }t          j        | |           d S )NTrR   typename)	rO   arrayri   r9   SeriesrS   rk   r\   assert_series_equal)stype_expected_pa_typearrrd   s        r1   _check_series_roundtriprs      s{    
(1$U
3
3
3C-5 #x+++++Ys}}QV444F1f%%%%%r3   c                 d   t          j        | d||          }|                                }t          j        |           }| |j        |                                k    sJ n"|j        ||z                                  k    sJ ||t          j        |           }n=t          j        |                                           }d ||                                <   |j	        dk    r!|
                    t          j        d i          }t          j        t          j        |          |d           d S )NT)rR   maskri   rI   Fcheck_names)rO   rl   rS   r9   isnull
null_countsumrm   copyr   rV   r;   rW   r\   rn   )valuesr_   ru   ri   rr   rd   values_nullss          r1   _check_array_roundtripr~      s   
(6t$T
B
B
BC]]__F9V$$L|~!1!1!3!333333~$"5!:!:!<!<<<<<<y((HHy((--//H$(HTYY[[!>X%%''77H29V,,hEJJJJJJr3   c                     t          j        | d|          }|                                }t          j        ||            d S )NTrh   rO   rl   rS   nptassert_array_equal)np_arrayri   rr   rd   s       r1   "_check_array_from_pandas_roundtripr      s>    
(8D
9
9
9C]]__F68,,,,,r3   c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(ej        )                    d%e*j+        e*j,        e*j-        e*j.        g          d&             Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d,S )-TestConvertMetadataz9
    Conversion tests for Pandas metadata & indices.
    c                     t          j        dg di          }t          j                            |          }|                    d          j        dk    sJ d S )Nr   r   r5      0)r9   r:   rO   rQ   rR   fieldrk   selfr^   rc   s      r1   test_non_string_columnsz+TestConvertMetadata.test_non_string_columns   sR    \1iii.))$$R(({{1~~"c))))))r3   c                 >   t          j        g dg dd          }|                    d          }t          j        t
                    5  t          j                            |          }|	                    d          j
        dk    sJ 	 d d d            n# 1 swxY w Y   |                                }t          |j        j
                  |j        _
        t          j        t
                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )N      ?       @      @)      @      @      @)r   r   r   1Tr_   rE   )r9   r:   	set_indexpytestwarnsUserWarningrO   rQ   rR   r   rk   r{   r-   indexrf   )r   r^   rc   r_   s       r1   "test_non_string_columns_with_indexz6TestConvertMetadata.test_non_string_columns_with_index   s   \ooo///BBCC\\!__ \+&& 	. 	.H((,,E;;q>>&#-----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 7799!(."566\+&& 	9 	9#B379 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s%   
A BBB2DDDc                    t          j        g dg dg ddddg          }t          j                            |ddg          }t          j                            |ddg                   }|                    |          sJ t          j                            |ddg          }t          j                            |ddg                   }|                    |          sJ d S )Nr   )r   r   r   )r5         r   r   r5   r   r   rU   )r9   r:   rO   rQ   rR   rT   rP   )r   r^   rc   r_   record_batch_tablerecord_batch_expecteds         r1   test_from_pandas_with_columnsz1TestConvertMetadata.test_from_pandas_with_columns   s    \iiiIII)))DD#$a&* * * $$R!Q$888''Aq6
33u%%%%%^77QF7KK " : :2q!f: F F$++,>???????r3   c                 r    t          j        dg di          }dg|j        _        t	          |d           d S )Ndatar   aTrE   )r9   r:   rU   namesrf   r   r^   s     r1   %test_column_index_names_are_preservedz9TestConvertMetadata.test_column_index_names_are_preserved   s?    \6999-..5
4888888r3   c           	          t          j        t          j                            dd          t          j        dddd                    }t          |d	           d S )
Nr   r   z
2021-01-0150DCET)periodsfreqtzr   Tr   )r9   r:   r;   r=   r>   
date_rangerf   r   s     r1   test_column_index_names_with_tzz3TestConvertMetadata.test_column_index_names_with_tz   s^     \IOOAq!!M,%PPP
 
 
 	 4888888r3   c           
      z   t          j        t          j        d          t          j        d          ggt           j                            t          j        d          gt          j        d          t          j        d          gg          t          j        d          g          }t          |d	           d S )
Nr      r   r5   r   r   )rU   r   Tr   )r9   r:   decimalDecimal
MultiIndexfrom_productrf   r   s     r1   $test_column_index_names_with_decimalz8TestConvertMetadata.test_column_index_names_with_decimal   s    \oa  '/!"4"456M../!$$%(:(:GOA<N<N'OP  ?1%%&
 
 
 	 4888888r3   c           	      \   d}t          j        dg dit          j        ddd|                    }t          j        dg d	it          j        dd
                    }t          j                            |          }t          j                            |          }t          |j                  dk    sJ |                                }t          j
        ||           t          |j        t           j                  sJ t          j        |j        d          dk    sJ |j        j        |k    sJ |                                }t          j
        ||           t          |j        t           j                  sJ t          j        |j        d          dk    sJ |j        j        J d S )Nfoor   r   r5   r   r   r      r5   steprk   r   r   r   r      r   r   r   )r9   r:   
RangeIndexrO   rQ   rR   lenrD   rS   r\   r]   
isinstancer   r   get_rangeindex_attributerk   )r   
index_namer^   df2rc   table_no_index_namerd   result2s           r1   test_range_index_shortcutz-TestConvertMetadata.test_range_index_shortcut   s   
\3- "a L L LN N N lC.!#q!!4!46 6 6 $$R(( h22377 5<  A%%%%""
fb)))&,666663FL&IIQNNNN| J....%//11
gs+++'-777773GM6JJaOOOO}!)))))r3   c           	      *   t          j        dg dit          j        dddd                    }t          j                            |d	
          }|j        dk    sJ d|j        v sJ |                                }t          j
        ||           d S )Nr   r   r   r   r5   r   r   r   Tr   )r9   r:   r   rO   rQ   rR   num_columnscolumn_namesrS   r\   r]   )r   r^   rc   restoreds       r1   $test_range_index_force_serializationz8TestConvertMetadata.test_range_index_force_serialization  s     \3- "a G G GI I I $$R$== A%%%%*****??$$
h+++++r3   c                 L   t          j        t          j                            dd          ddg          }t          j                    5  t          j        d           t          j        dd	t                     t          |d
           d d d            d S # 1 swxY w Y   d S )Nr   r5   r   br   erroractionrJ   make_block is deprecatedTr   )r9   r:   r;   r=   r>   rX   rY   simplefilterrZ   r[   rf   r   s     r1   test_rangeindex_doesnt_warnz/TestConvertMetadata.test_rangeindex_doesnt_warn  s     \")//!Q//#sDDD$&& 	= 	=!1111 #46H   $Bt<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   
ABB Bc                     t           j                            ddgddgg          }t          j        g d|          }t	          |d           d S )	NonetwoXYr   r   r5   r   )r   cr   Tr   r9   r   from_arraysr:   rf   r   rU   r^   s      r1   test_multiindex_columnsz+TestConvertMetadata.test_multiindex_columns$  sa    -++ENS#J-
   \888'JJJ4888888r3   c                     t           j                            ddgt          j        ddg          gddg          }t          j        g d|	          }t          |d
           d S )Nr   r   z
2017-08-01z
2017-08-02level_1level_2r   r   r   Tr   )r9   r   r   DatetimeIndexr:   rf   r   s      r1   #test_multiindex_columns_with_dtypesz7TestConvertMetadata.test_multiindex_columns_with_dtypes+  s}    -++ ,!=>> i( , 
 
 \888'JJJ4888888r3   c           
         t          j        dgt          j        dgt                              }t	          |d           t          j        dgt          j        dgt                              }t	          |d           t          j        dgt          j        t          ddd          gd                    }t	          |d           d S )	Nr   r   r   Tr   皙?  rI   )r9   r:   IndexrI   rf   r   r   s     r1   (test_multiindex_with_column_dtype_objectz<TestConvertMetadata.test_multiindex_with_column_dtype_object6  s    
 \1#rx6'B'B'BCCC48888 \1#rxV'D'D'DEEE48888 \1#rxdAq!!"((4 (4 (4 5 5 54888888r3   c                     t           j                            ddgddgg          }t          j        g d|          }t	          |d           d S )	N   あ   いr   r   r   r   Tr   r   r   s      r1   test_multiindex_columns_unicodez3TestConvertMetadata.test_multiindex_columns_unicodeH  sX    -++eU^c3Z,HII\888'JJJ4888888r3   c                 Z   t           j                            ddgddgg          }t          j        g d|          }t	          j                    5  t	          j        d           t	          j        d	d
t                     t          |d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   r   r   rJ   r   Tr   )
r9   r   r   r:   rX   rY   r   rZ   r[   rf   r   s      r1   test_multiindex_doesnt_warnz/TestConvertMetadata.test_multiindex_doesnt_warnM  s    -++eU^c3Z,HII\888'JJJ$&& 	= 	=!1111 #46H   $Bt<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   AB  B$'B$c                 T    t          j        g d          }t          |d           d S )Nr   Tr   r9   r:   rf   r   s     r1   test_integer_index_columnz-TestConvertMetadata.test_integer_index_column\  s1    \888994888888r3   c                 p    t          j        g ddt          j        g          }t	          |d           d S )Nr         ?r   Tr   )r9   r:   r;   rW   rf   r   s     r1   $test_float_column_index_with_missingz8TestConvertMetadata.test_float_column_index_with_missing`  s<    \8883-PPP4888888r3   z?ignore:The DataFrame has column names of mixed type:UserWarningc                 \    t          j        g ddd g          }t          |d           d S )Nr   Ar   Tr   r   r   s     r1   %test_string_column_index_with_missingz9TestConvertMetadata.test_string_column_index_with_missingd  s<     \8883+NNN4888888r3   c                    t          j        g dt           j                            g dg dgd dg          g d          }t	          j                    r"t          j                            |d	          }nRt          j
        t                    5  t          j                            |d	          }d d d            n# 1 swxY w Y   |j        j        }|d
         \  }}}}}|d         dk    sJ |d         |d         k    sJ t	          j                    r+t          j        |d                   sJ |d         dk    sJ n|d         J |d         dk    sJ |d         dk    sJ |d         |d         k    sJ |d         \  }	}
|	dk    sJ |d         |	k    sJ |d         J |
dk    sJ |d         |
k    sJ |d         |
k    sJ d S )N))r   r   @)r5   r   g@)r   r   g?)r   r   r   )r   r5   r   r   r   )r   N__index_level_0__)r   rU   Tr   rU   rk   r   
field_namerW   Noner  index_columns)r9   r:   r   r   r   uses_string_dtyperO   rQ   rR   r   r   r   rD   pandas_metadatar;   isnan)r   r^   tjscol1col2col3idx0r   
idx0_descr	foo_descrs              r1   test_index_metadata_field_namez2TestConvertMetadata.test_index_metadata_field_namek  s   \999-++ ))),Um ,   544
 
 
 (** 	B$$R$==AAk** B BH((D(AAB B B B B B B B B B B B B B BX%&(m#dD$F|s""""F|tL11111(** 	08DL)))))%.....<'''%////F|22222F|tL11111 "? 3
I00000L!Z////F|###E!!!!< I----6{i''''''s   "B??CCc                 v   t          j        g dt          j        t          d          d                    }t          j                            |d          }|j        j        }|d         \  }|d	         J |d
         dk    sJ |d         dk    sJ |d         }|d         dk    sJ |d         du sJ d S )N)r   r   r   )r5   r   r   )r   r   r   defcategoryr   r   Tr   column_indexesrk   pandas_typecategorical
numpy_typer   metadatanum_categoriesr   orderedF)	r9   r:   r   listrO   rQ   rR   rD   r
  r   r^   r  r  r  mds         r1   test_categorical_column_indexz1TestConvertMetadata.test_categorical_column_index  s    \999HT%[[
;;;
 
 
 H  D 99X%-.f%---m,====l+v5555J'"#q(((()}%%%%%%r3   c                    t          j        g dt          j        t          d          d                    }t          j                            |d          }|j        j        }|d         \  }|d	         dk    sJ |d	         |d
         k    sJ |d         t          j
                    rdndk    sJ |d         dk    sJ |d         }t          |          dk    sJ |d         dk    sJ d S )Nr  r  stringzrj   r   Tr   r  rk   r  r  r-   rI   r  unicoder  r   encodingUTF-8)r9   r:   r   r   rO   rQ   rR   rD   r
  r   r	  r   r!  s         r1   test_string_column_indexz,TestConvertMetadata.test_string_column_index  s   \999HT%[[y999
 
 
 H  D 99X%-.f%2222f%)EEEEEl+ 244BEE(
 
 
 
 m,	9999J'2ww!||||*~((((((r3   c                 F   t          j        g dt          j        ddd                    }t          j                            |d          }|j        j        }|d	         \  }|d
         J |d         dk    sJ |d         dk    sJ |d         }|d         dk    sJ d S )Nr  
2017-01-01r   America/New_Yorkstartr   r   r   Tr   r  rk   r  
datetimetzr  r'   r  r   )r9   r:   r   rO   rQ   rR   rD   r
  r!  s         r1   test_datetimetz_column_indexz0TestConvertMetadata.test_datetimetz_column_index  s    \999M"A2D  
 
 
 H  D 99X%-.f%---m,<<<<l+/?????J'*~!3333333r3   c                     t          j        dt          j        ddd          i          }|                    d          }t	          |d           d S )Nr   r+  r   r,  r-  Tr   )r9   r:   r   r   rf   r   s     r1   test_datetimetz_row_indexz-TestConvertMetadata.test_datetimetz_row_index  sb    \"A2D  
  
 \\#4888888r3   c                     t          j        g dg dd          }|j                            d          |d<   |                    d          }t          |d           d S )Nr   r   r   r  r   Tr   )r9   r:   r   astyper   rf   r   s     r1   test_categorical_row_indexz.TestConvertMetadata.test_categorical_row_index  sb    \						::;;$++j))3\\#4888888r3   c                     t          j        ddgt          d                    }t          j        t
                    5  t          j                            |           d d d            d S # 1 swxY w Y   d S )Nr   r   aar   )	r9   r:   r   r   raises
ValueErrorrO   rQ   rR   r   s     r1   *test_duplicate_column_names_does_not_crashz>TestConvertMetadata.test_duplicate_column_names_does_not_crash  s    \8X.T

CCC]:&& 	% 	%H  $$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s    A,,A03A0c                    ddgddgg}|D ]}t           j                            |dgd          }t           j                            |gdg          }t           j                            |||g          }t          j        t                    5  |	                                 d d d            n# 1 swxY w Y   t          j        t                    5  |	                                 d d d            n# 1 swxY w Y   d S )Nr   r   r   Fsafer   )
rO   DictionaryArrayr   rP   rQ   from_batchesr   r9  
IndexErrorrS   )r   indicesindsrr   batchrc   s         r1   #test_dictionary_indices_boundscheckz7TestConvertMetadata.test_dictionary_indices_boundscheck  sm   q6Ar7# 		" 		"D$00u50IICN..uug>>EH))5%*?@@Ez**                                  z** " "!!!" " " " " " " " " " " " " " "		" 		"s$   B..B2	5B2	C33C7	:C7	c                 \    t          j        ddgidg          }t          |d           d S )Nr   r   u   うr   Tr   r   r   s     r1   *test_unicode_with_unicode_column_and_indexz>TestConvertMetadata.test_unicode_with_unicode_column_and_index  s8    \55'*5':::4888888r3   c                 8   t          j        ddgddgd          }ddgddgdd	gfD ]}t          j        |t          
          |_        t          j        t                    5  t          j	        
                    |           d d d            n# 1 swxY w Y   |                                }|j        j                            t                    |_        t          j        t                    5  t          ||d           d d d            n# 1 swxY w Y   d S )Nr   r5   r   r   r4  r      a2r   r   Tr   )r9   r:   r   rI   rU   r   r   r   rO   rQ   rR   r{   r|   r5  r-   rf   )r   r^   colsr_   s       r1   test_mixed_column_namesz+TestConvertMetadata.test_mixed_column_names  s   \AaV4455T]QHq#h7 	= 	=D$f555BJ k** ) )$$R((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) wwyyH!z077<<Hk** = ='X7;= = = == = = = = = = = = = = = = = =	= 	=s$   " BB	B	/DD	D	c                 *   t          d          t          t          j                  cxk    rt          d          k     rn nt          j        d           dg}d                                }||i}t          j        |          }t          j        	                    |d          }|
                                }|j        d         |j        d         k    sJ |j        j        d         |j        j        d         k    sJ |j        d         |k    sJ d S )	N2.0.03.0.0Regression in pandas 2.0.0r   r   Tr   r   )r   r9   __version__r   skipencoder:   rO   rQ   rR   rS   r|   r   rU   )r   column_datakeyr   r^   r  r   s          r1   test_binary_column_namez+TestConvertMetadata.test_binary_column_name  s   7wr~66IIII9I9IIIIII K4555gllnn[!\$ H  D 99kkmmy|sz!},,,,xq!SY%5a%88888z!}######r3   c                     d}t          t          |                    }t          j                            g d|gddg          }t          j        d|i|          }t          |d	           d S )
Nr   )r   r   barfoobarsome_numbersr   numbersr   Tr   )r   r?   r9   r   r   r:   rf   )r   num_rowsr\  r   r^   s        r1    test_multiindex_duplicate_valuesz4TestConvertMetadata.test_multiindex_duplicate_values  s    uX''))"""G,^, * 
 

 \9g.e<<<4888888r3   c                     t          j        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mixedrU   r   r  bytesr  rI   r9   r:   rO   rQ   rR   rD   r
  )r   r^   rc   r  data_columns        r1   test_metadata_with_mixed_typesz2TestConvertMetadata.test_metadata_with_mixed_types&  s    \6M>#BCDD$$R((\)b    mA&=)W4444<(H444444r3   c                 T   t          j        g dg ddg d          }t          j                            |          }|                    d          }|                    |j                                                                                  }t          j
        ||           d S )Nr   r   rY  bazr4  )r   r   threer   T)ignore_metadata)r9   r:   rO   rQ   rR   rS   castrD   remove_metadatar\   r]   )r   r^   rc   rd   r_   s        r1   test_ignore_metadataz(TestConvertMetadata.test_ignore_metadata/  s    \			0E0E0EFF 7 7 79 9 9$$R((66JJu|;;==>>Y[[ 	 	fh/////r3   c           	         t          j        ddgg ddgdz  gi          }t          j        t          j        dt          j        t          j                                        g          }t          j                            ||          }|j        j	        }d|vsJ |d	         d
         }|d         dk    sJ |d         dk    sJ d S )Nr   r   r5   r   r   r   r   ri   rD   ra  rU   r   r  zlist[int64]r  rI   )
r9   r:   rO   rD   r   list_r   rQ   rR   r
  )r   r^   rD   rc   r  rd  s         r1   test_list_metadataz&TestConvertMetadata.test_list_metadata:  s    \6QCQC!G#<=>>BHV"(28::2F2FGGGHII$$R$77\)b    mA&=)]::::<(H444444r3   c                     t          j        dddddddgi          }t          j                            |          }|j        j        }|d         d         d	         d
k    sJ d S )Ndictsr   r5   r4  r   r   rU   r   r  rI   rc  )r   r^   rc   r
  s       r1   test_struct_metadataz(TestConvertMetadata.test_struct_metadataD  sp    \711%5%5QQ7G7G$HIJJ$$R((,6y)!,];xGGGGGGr3   c                 X   t          j        dt          j        d          t          j        d           gi          }t          j                            |          }|j        j        }d|vsJ |d         d         }|d         dk    sJ |d	         d
k    sJ |d         dddk    sJ d S )Ndecimals394092382910493.12341234678z314292388910493.12343437128ra  rU   r   r  r   r  rI   r        	precisionscale)	r9   r:   r   r   rO   rQ   rR   rD   r
  )r   r_   rc   r  rd  s        r1   test_decimal_metadataz)TestConvertMetadata.test_decimal_metadataJ  s    < =>>!>???!
   $$X..\)b    mA&=)Y6666<(H4444:&R*H*HHHHHHHr3   typc           	      n   t          j        dt          j        d          gi          }t	          j        t	          j        d |dd                    g          }t          j                            ||          }|j        j	        d         d         }|d	         d
k    sJ |d         dddk    sJ d S )Nr   3.14r   r5   rp  rq  rU   r   r  r   r  r|  )
r9   r:   r   r   rO   rD   r   rQ   rR   r
  )r   r  r^   rD   rc   col_metas         r1   test_decimal_other_bitwidtsz/TestConvertMetadata.test_decimal_other_bitwidtsY  s     \3!8!8 9:;;BHSss1ayy999:;;$$R$77</	:1=&)3333
#Q'C'CCCCCCCr3   c                 |   t          j        g dd          t          j        ddd          fD ]
}t          j        g dg d	d
|          }t          j                            |          }|                    d          }|                                }|dg         }t          |j
        t           j                  rd |j
        _        t          j        ||           |                    d          }|                                }t          j        ||dg                             d                     d S )Nr   r   r   r   rj   r+  r   Europe/Brusselsr   r   r   皙?皙?333333?r4  r   r   r   Tdrop)r9   r   r   r:   rO   rQ   rR   remove_columnrS   r   r   r   r   r\   r]   reset_index)r   r   r^   rc   table_subsetrd   r_   table_subset2s           r1   !test_table_column_subset_metadataz5TestConvertMetadata.test_table_column_subset_metadatag  sL    w777lA:KLLLN 	L 	LE III$0LL2 29>@ @ @BH((,,E ..q11L!++--F3%yH"(B$455 % $!&(333(66q99M",,..F!&"cU)*?*?T*?*J*JKKKK!	L 	Lr3   c                    t          j        t          t          d                    t          t          d                    t	          j        d          d          }t          j                            |	                    ddg                    }|
                    ddg          }|                                }|ddg         	                    d          }t          j        ||           d S )Nr   )firstsecondvaluer  r  r  )r9   r:   r   r?   r;   r<   rO   rQ   rR   r   selectrS   r\   r]   )r   r^   rc   subsetrd   r_   s         r1   'test_to_pandas_column_subset_multiindexz;TestConvertMetadata.test_to_pandas_column_subset_multiindex|  s    \588nnE!HH~~ill$ $
 

 $$R\\7H2E%F%FGGw011!!##w()33G<<
fh/////r3   c                 x   dgddgd g}g g g g}t          dt          j        |t          j        t          j                                        fdt          j        |t          j        t          j                                        fg          }t          j                            t          |                                          t          |	                                                    }t          j
                            |g          }|                                }t          j
                            |          }|j        j        }|                                }	t!          j        t          d|fd|fg                    }
t%          j        |	|
           |d         ddd dd	d
ddd ddd
gk    sJ d S )Ntestr   r   c1rp  c2rU   rI   zlist[unicode])rk   r  r  r  r  zlist[empty])r   rO   rl   rr  stringrP   r   r   r|   keysrQ   rA  rS   rR   rD   r
  r9   r:   r\   r]   )r   r  r  arraysrbtblr^   tbl2md2r   r_   s              r1   test_empty_list_metadataz,TestConvertMetadata.test_empty_list_metadata  s    hc
D)"b\28BRXbikk%:%:;;;<28BRXbikk%:%:;;;<
   ^''!!
 
 h##RD)) ]]__x##B''k) nn<dBZ$,D E EFF
c8,,,9~" &.  " &, "
 
 
 
 
 
 
r3   c                     t          j        g dg dd          }t          j                            |          }|j        j        d         J d S )Nr   r4  pandas_versionrc  r   s      r1   test_metadata_pandas_versionz0TestConvertMetadata.test_metadata_pandas_version  sS    \						::;;$$R((|+,<=IIIIIr3   c                    t          j        dt          j        dd          i          }t          j                            |          }|d                             t          j        dd                    }|                    dt          j	        d|j
                  |          }t          j        dt          j        dd          fg          }t          j                            ||	          }|                                }|d         j                            d          |d<   ||fD ]9}|j        j        J |                                }	t#          j        |	|           :d S )
Nr   z
2020-01-01r   r   nsUTCr   r   rq  )r9   r:   r   rO   rQ   rR   rk  	timestamp
set_columnr   ri   rD   r{   dttz_localizer
  rS   r\   r]   )
r   r^   rc   new_col
new_table1rD   
new_table2r_   	new_tablerd   s
             r1   test_mismatch_metadata_schemaz1TestConvertMetadata.test_mismatch_metadata_schema  sU   
 \:r}\1'M'M'MNOO $$R((
#((du)E)E)EFF%%rx
GL117
 


 Zdu)E)E)EFGHHX))"V)<<
7799'
36BB5II$j1 	4 	4I#3???((**F!&(3333	4 	4r3   N)5__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markrZ   r  r  r#  r)  r0  r2  r6  r;  rF  rH  rM  rW  r^  re  rm  rs  rv  r  parametrizerO   	decimal32	decimal64
decimal128
decimal256r  r  r  r  r  r  r+   r3   r1   r   r      s        * * *
9 9 9 
@ 
@ 
@9 9 9
9 9 9	9 	9 	9* * *6, , ,= = =9 9 9	9 	9 	99 9 9$9 9 9
= = =9 9 99 9 9 [I 9 9 9'( '( '(R& & &") ) )*4 4 4$9 9 99 9 9% % %
" " "9 9 9
= = ="$ $ $&
9 
9 
95 5 5	0 	0 	05 5 5H H HI I I [U



	%  D D DL L L*0 0 0*
 *
 *
XJ J J
4 4 4 4 4r3   r   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestConvertPrimitiveTypesz>
    Conversion tests for primitive (e.g. numeric) types.
    c                    i }g }dt          j                    fdt          j                    fdt          j                    fg}d}|D ]d\  }}t          j                            |          }|                    |          ||<   |                    t          j	        ||                     et          j        |          }t          j        |          }	t          ||	           d S )Nf2f4f8r   r`   )rO   float16r    r!   r;   r=   r>   r5  appendr   r9   r:   rD   rf   )
r   r   fieldsdtypes
num_valuesnumpy_dtypearrow_dtyper|   r^   rD   s
             r1   test_float_no_nullsz-TestConvertPrimitiveTypes.test_float_no_nulls  s    &&&( 
(. 	> 	>$KY__Z00F &k : :DMM"(;<<====\$6""F;;;;;;r3   c                    d}t           j                            dd|          dk     }dt          j                    fdt          j                    fdt          j                    fg}g d	}g }g }g }|D ]\  }}	t           j                            |                              |          }
t          j	        |
d
|          }|
                    |           |
                    t          j        ||	                     t           j        |
|<   |
                    |
           t          j        t          t!          ||                    |          }t          j                            ||          }|j                            t          j        |                    sJ |                                }t-          j        ||           d S )Nr   r   
   r@   r   r  r  r  )r  r  r  T)rR   ru   r   )r;   r=   randintrO   r  r    r!   r>   r5  rl   r  r   rW   r9   r:   dictziprQ   r   rD   rT   rS   r\   r]   )r   r  	null_maskr  r   expected_colsr  r  rk   r  r|   rr   ex_framerc   rd   s                  r1   test_float_nullsz*TestConvertPrimitiveTypes.test_float_nulls  s   
I%%a*%==A	&&&( #""!' 	) 	)D+Y__Z0077==F(6t)DDDCMM#MM"(455666 "F9  ((((<S%>%> ? ?(-/ / / $$VU33|""29V#4#455555""
fh/////r3   c                    t          j        dddt          j        gi          }t	          j        t	          j        dt	          j                    d          g          }t          j        	                    ||d          }|d         
                                g d	k    sJ t          j        ||                                           d S )
Nr   r   r   TnullableFrD   r?  r   r   r5   N)r9   r:   r;   rW   rO   rD   r   r   rQ   rR   	to_pylistr\   r]   rS   r   r^   rD   rc   s       r1   test_float_nulls_to_intsz2TestConvertPrimitiveTypes.test_float_nulls_to_ints  s    \3c26 2344BHS"(**tDDDEFF$$RU$CCQx!!##|||3333
b%//"3"344444r3   c                     t          j        g d          }t          j        g d          }t          ||t          j                               d S )N)        r   r   Ng      )FTTNTr_   ri   )r9   rm   r~   rO   bool_r   ro   r_   s      r1   test_float_nulls_to_booleanz5TestConvertPrimitiveTypes.test_float_nulls_to_boolean  sO    I111229<<<==q8"(**EEEEEEr3   c                     t          j        dt          j        g          }t	          j        |d          }|j        dk    sJ t          j        |d                                                   sJ d S )Nr  FrR   r   r   )	r9   rm   r;   rW   rO   rl   ry   r  as_py)r   ro   rr   s      r1   'test_series_from_pandas_false_respectedzATestConvertPrimitiveTypes.test_series_from_pandas_false_respected  sf    IsBFm$$hqe,,,~""""xA'''''''r3   c                    t                      }g }dt          j                    fdt          j                    fdt          j                    fdt          j                    fdt          j                    fdt          j                    fdt          j                    fdt          j	                    fd	t          j                    fd
t          j	                    fg
}d}|D ]\  }}t          j        |          }t          j                            t          |j        t          j        t          j                  j                  t          |j        t          j        t          j                  j                  ||          }|                    |          ||<   |                    t          j        ||                     t)          j        |          }	t          j        |          }
t/          |	|
           d S )Ni1i2i4i8u1u2u4u8longlong	ulonglongr   rA   r   r  )r   rO   r   r   r   r   r   r   r   r   r;   iinfor=   r  maxminint_r5  r  r   r9   r:   rD   rf   )r   r   r  numpy_dtypesr  r   r  infor|   r^   rD   s              r1   test_integer_no_nullsz/TestConvertPrimitiveTypes.test_integer_no_nulls!  s   }} 2799bhjj128::rxzz 228::ry{{ 329;;$	!4${BIKK&@
 
". 	8 	8E;8E??DY&&s48RXbg5F5F5J'K'K'*48RXbg5F5F5J'K'K,6e ' E EF !--..DKMM"(5+667777\$6""F;;;;;;r3   c                 Z   t                      }g d}|D ]}t          j        d|          ||<   t          j        |          }t          |           |                                D ]B}t          j        |          }|	                                |
                                k    sJ Cd S )N)r  r  r  r  r  r  r  r  byteubyteshortushortintcuintcr  uintr  r     r   )r   r;   r<   r9   r:   rf   r|   rO   rl   r  tolist)r   r   r  r   r^   np_arrrr   s          r1   test_all_integer_typesz0TestConvertPrimitiveTypes.test_all_integer_types:  s    }}A A A " 	5 	5E)Be444DKK\$### kkmm 	6 	6F(6""C==??fmmoo55555	6 	6r3   c           	         g d}|D ]}dD ]}t          j        g d||z             }||d d d         fD ]}|j        j        rAt	          j        |          }|                                |                                k    sJ Ot          j        t                    5  t	          j        |          }d d d            n# 1 swxY w Y   d S )Nr  r  r  r  r  r  r  r  z=<>)r   r5   *   r   r5   )
r;   rl   r   isnativerO   r  r  r   r9  NotImplementedError)r   
int_dtypesr  orderr   r	  rr   s          r1   test_integer_byteorderz0TestConvertPrimitiveTypes.test_integer_byteorderK  s+   EEE
 		1 		1B 1 1x


%"*===#T##A#Y/ 1 1Fz* 1 htnn"}}$++--?????#]+>?? 1 1"$(4..C1 1 1 1 1 1 1 1 1 1 1 1 1 1 111		1 		1s   B>	>CCc                 p   g d}d}t           j                            dd|          dk     }g }g }|D ]}t           j                            dd|          }t          j        ||          }|                    |           |                    d          }	t           j        |	|<   |                    |	           t          j	        t          t          ||                    |	          }
t          j                            ||          }|                                }t          j        ||
           d S )
Nr  r   r   r  r@   r   ru   r  r   )r;   r=   r  rO   rl   r  r5  rW   r9   r:   r  r  rQ   r   rS   r\   r]   )r   r  r  r  r  r  rk   r|   rr   r_   r  rc   rd   s                r1   test_integer_with_nullsz1TestConvertPrimitiveTypes.test_integer_with_nullsY  s3    FEE

I%%a*%==A	 		+ 		+DY&&q#J&??F(6	222CMM#}}T**H"$&HY  ****<S]%C%C D D(24 4 4 $$VZ88""
fh/////r3   c                     t          j        dd          }t          j                    }t          j        ||          }t          j        |                    d                    }|                    |          sJ d S )Nr  r   r   rp  r   )r;   r<   rO   r   rl   r5  rT   )r   rr   target_typerd   r_   s        r1    test_array_from_pandas_type_castz:TestConvertPrimitiveTypes.test_array_from_pandas_type_castv  sn    i'***gii#K0008CJJv..//}}X&&&&&&&r3   c                 N   d}t           j                            d           t          j        dt           j                            |          dk    i          }t          j        dt          j                              }t          j	        |g          }t          ||           d S )Nr   r   boolsr  )r;   r=   seedr9   r:   r>   rO   r   r  rD   rf   )r   r  r^   r   rD   s        r1   test_boolean_no_nullsz/TestConvertPrimitiveTypes.test_boolean_no_nulls  s    

	q\7BIOOJ$?$?!$CDEE"(**--E7##F;;;;;;r3   c                    d}t           j                            d           t           j                            dd|          dk     }t           j                            dd|          dk     }t	          j        ||          }|                    t                    }d ||<   t	          j        dt	          j	                              }t	          j
        |g          }t          j        d|i          }t          j                            |gdg          }	|	j
                            |          sJ |	                                }
t#          j        |
|           d S )	Nr   r   r  r@   r   r   r  r  )r;   r=   r  r  rO   rl   r5  rI   r   r  rD   r9   r:   rQ   r   rT   rS   r\   r]   )r   r  ru   r|   rr   r_   r   rD   r  rc   rd   s              r1   test_boolean_nullsz,TestConvertPrimitiveTypes.test_boolean_nulls  s&   

	qy  BZ 881<""1bz"::Q>hvD)))==(("(**--E7##<( 344$$cUWI66|""6*****""
fh/////r3   c                     t          j        g ddz            }t          j        g ddz            }t          ||t          j                               d S )NTTFTTr5   r   r   r   r   r   r  )r9   rm   r~   rO   r   r  s      r1   test_boolean_to_intz-TestConvertPrimitiveTypes.test_boolean_to_int  sV    I5559::9___q011q8"(**EEEEEEr3   c                 4   t          j        g ddz  t                    }t          j        g ddz            }d}t          j        t
          j        |          5  t          ||t          j                               d d d            d S # 1 swxY w Y   d S )Nr   r5   r   r!  zExpected integer, got boolmatchr  )	r9   rm   rI   r   r9  rO   ArrowTypeErrorr~   r   )r   ro   r_   expected_msgs       r1   test_boolean_objects_to_intz5TestConvertPrimitiveTypes.test_boolean_objects_to_int  s    I5559HHH9___q0113]2,LAAA 	J 	J"1xbhjjIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   $BBBc                     t          j        g ddz            }t          j        g ddz            }t          ||t          j                               d S )N)TTFNTr5   )r   r   r  Nr   r  )r9   rm   r~   rO   r!   r  s      r1   test_boolean_nulls_to_floatz5TestConvertPrimitiveTypes.test_boolean_nulls_to_float  sY    I5559::9777!;<<q8"*,,GGGGGGr3   c                 |    t          j        t          j        dd          ddg          }t	          |           d S )N)r   r5   r"   r   r   r   r   )r9   r:   r;   onesrf   r   s     r1   test_boolean_multiple_columnsz7TestConvertPrimitiveTypes.test_boolean_multiple_columns  s=    \"'&777#sLLL#####r3   c                    t          j        d dt          j        d          gdz  t                    }t	          j        d|i          }t	          j        dt	          j        |          i          }t          j        dt          j                              }t          j	        |g          }t          |||           d S )Nr   g      @r   r   floatsr_   r`   )r;   rl   r!   rI   r9   r:   
to_numericrO   r   rD   rf   r   rr   r^   r_   r   rD   s         r1   test_float_object_nullsz1TestConvertPrimitiveTypes.test_float_object_nulls  s    hc2:c??3a7vFFF\8S/**<2=+=+= >??2:<<00E7##X06	8 	8 	8 	8 	8 	8r3   c           	      6   t          j        t          j        ddt          j        g          }t	          j                    t	          j                    t	          j                    t	          j                    t	          j	                    t	          j
                    t	          j                    t	          j                    g}|D ]}t	          j        ||          }t	          j        g d|          }|                    |          sJ t          j        d|i          }t	          j        t	          j        d|          g          }t          j                            ||d          }|d                             d                              |          sJ d S )	Nr   r   rp  )Nr   r5   N	has_nullsFrD   rE   r   )r9   rm   r;   rW   rO   r   r   r   r   r   r   r   r   rl   rT   r:   rD   r   rQ   rR   chunk)r   ro   typestyrd   r_   r^   rD   s           r1   test_float_with_null_as_integerz9TestConvertPrimitiveTypes.test_float_with_null_as_integer  sL   Irvr2rv.//BHJJ

BHJJRY[[")++ry{{D 		7 		7BXab)))Fx 2 2 2<<<H==*****{A.//BYb 9 9:;;FX))"V9> * @ @F!9??1%%,,X666666		7 		7r3   c                    t          j        d dt          j        d          gdz  t                    }t	          j        d|i          }t	          j        dt	          j        |          i          }t          j        dt          j                              }t          j	        |g          }t          |||           d S )Nr   r   r   r   intsr0  )r;   rl   r   rI   r9   r:   r1  rO   r   rD   rf   r2  s         r1   test_int_object_nullsz/TestConvertPrimitiveTypes.test_int_object_nulls  s    ha!-1@@@\63-((<s);); <==,,E7##X06	8 	8 	8 	8 	8 	8r3   c                 
   t          j        g ddz  t                    }t          j        d|i          }t          j        dt          j                              }t          j        |g          }t          ||           d S )N)FNTr   r   r  r  )
r;   rl   rI   r9   r:   rO   r   r  rD   rf   )r   rr   r^   r   rD   s        r1   test_boolean_object_nullsz3TestConvertPrimitiveTypes.test_boolean_object_nulls  sv    h***S0???\7C.))"(**--E7##F;;;;;;r3   c                     t          j        d gt                    fd} |t          j                                |t          j                               d S )Nr   c                     t          j        |           }|j        | k    sJ |d                                         J d S )Nrp  r   )rO   rl   ri   r  )r  a2rr   s     r1   _check_typezJTestConvertPrimitiveTypes.test_all_nulls_cast_numeric.<locals>._check_type  sD    #A&&&B7a<<<<a5;;==(((((r3   )r;   rl   rI   rO   r   r!   )r   rC  rr   s     @r1   test_all_nulls_cast_numericz5TestConvertPrimitiveTypes.test_all_nulls_cast_numeric  sf    hvV,,,	) 	) 	) 	) 	)
 	BHJJBJLL!!!!!r3   c                 T   t          j        dt           j        gt           j                  }t	          j        |t	          j                              }|                                \  }}t          |t           j                  sJ |dk    sJ t          |t           j                  sJ t          j        |          sJ t	          j        |t	          j                    d          }|                                \  }}t          |t           j                  sJ |dk    sJ |J d S )Nr   r   rp  Tri   rR   )r;   rl   rW   r  rO   r  r   r  )r   rr   r   r0   ys        r1   test_half_floats_from_numpyz5TestConvertPrimitiveTypes.test_half_floats_from_numpy  s    hRV}BJ777HSrz||,,,{{}}1!RZ(((((Cxxxx!RZ(((((x{{HSrz||>>>{{}}1!RZ(((((Cxxxxyyyyyr3   N)r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r"  r(  r*  r-  r3  r:  r=  r?  rD  rH  r+   r3   r1   r  r    st        < < <"0 0 0<5 5 5F F F
( ( (< < <26 6 6"1 1 10 0 0:' ' '< < <0 0 0.F F FJ J JH H H$ $ $
8 8 87 7 7"8 8 8< < <	" 	" 	"    r3   r  r   r  c                    d}t           j                            dd|          dk     }t           j                            dd||           }t          j        ||          }|                                r|                    d          }d ||<   n|}|                    d	
          }t           j        	                    ||           d S Nr   r   r  r@   r   r  r  OTinteger_object_nulls)
r;   r=   r  rO   rl   anyr5  rS   testingassert_equal)r   r  r  r|   rl   r_   rd   s          r1   &test_array_integer_object_nulls_optionrQ    s     J	!!!Rj!99A=IYq#JeDDFHV),,,E}} ==%%"__$_77FJFH-----r3   c                    d}t           j                            dd|          dk     }t           j                            dd||           }t          j        ||          }|                                r|                    d          }d ||<   n|}t          j        | |i          }t          j	        
                    |g| g          }|                    d	
          }t          j        ||           d S rJ  )r;   r=   r  rO   rl   rN  r5  r9   r:   rQ   r   rS   r\   r]   )r   r  r  r|   rl   r_   rc   rd   s           r1   &test_table_integer_object_nulls_optionrS    s     J	!!!Rj!99A=IYq#JeDDFHV),,,E}} ==%%"|UH-..HH  %5'22E__$_77F&(+++++r3   c                      e Zd ZdZd Zd Zej                            dg d          d             Z	d Z
d Z ej         ej                    ej        z             ej        d	
          d                         Zd Zd Zd Zd Zej                            dd	g dg          d             Zej                            dddg          d             Zej                            dddg          d             Zej                            d ej                     ej                     ej        d           ej        d           ej        d           ej        d           ej        dd           ej        dd           ej        dd           ej        dd          g
          d             Zej                            d ej                     ej                     ej        d           ej        d           ej        d           ej        d           ej        dd           ej        dd           ej        dd           ej        dd          g
          d              Z d! Z!d" Z"d# Z#d$ Z$d% Z%d& Z&d' Z'd( Z(d) Z)d* Z*d+ Z+ej                            d, ej                     ej                    g          d-             Z,d. Z-ej        .                    e/d	uo/ e0d/           e0e/j1                  cxk    o e0d0          k     nc d12          d3             Z2ej                            dg d          d4             Z3ej                            dg d          d5             Z4d6 Z5d	S )7TestConvertDateTimeLikeTypeszQ
    Conversion tests for datetime- and timestamp-like types (date64, etc.).
    c                     t          j        dt          j        g dd          i          }t	          j        dt	          j        d                    }t	          j        |g          }t          ||           d S )N
datetime64)2007-07-13T01:23:34.1234567892006-01-13T12:34:56.4325397842010-08-13T05:46:57.437699912r'   r   r  r  	r9   r:   r;   rl   rO   r   r  rD   rf   r   r^   r   rD   s       r1   #test_timestamps_notimezone_no_nullsz@TestConvertDateTimeLikeTypes.test_timestamps_notimezone_no_nulls0      \"( $1 $1 $1 '	( ( (
   r|D'9'9::E7##"	
 	
 	
 	
 	
 	
r3   c                     t          j        dt          j        g dd          i          }t	          j        dt	          j        d                    }t	          j        |g          }t          ||           d S )NrW  )rX  NrZ  r'   r   r  r  r[  r\  s       r1    test_timestamps_notimezone_nullsz=TestConvertDateTimeLikeTypes.test_timestamps_notimezone_nulls?  r^  r3   unit)ro   msusr  c           	      @   t          t          j                  t          d          k     r|dk    rt          j        d           t          j        dt          j        g dd| d          i          }|d         j        	                    d	          |d<   t          |           t          |d                    t          j        dt          j        g d
d| d          i          }|d         j        	                    d	          |d<   t          |           d S )NrO  r  z0pandas < 2.0 only supports nanosecond datetime64rW  )2007-07-13T01:23:34.1232006-01-13T12:34:56.4322010-08-13T05:46:57.437zdatetime64[]r   
US/EasternrX  NrY  rZ  )r   r9   rR  r   rS  r:   r;   rl   r  r  rf   rs   )r   ra  r^   s      r1   test_timestamps_with_timezonez:TestConvertDateTimeLikeTypes.test_timestamps_with_timezoneN  sI   2>""WW%5%555$$,,KJKKK\"( $+ $+ $+ ,D+++	- - -
   l+.::<HH<###< 0111 \"( $1 $1 $1
 ,D+++- - -
   l+.::<HH<#####r3   c                    d t          d          D             }t          j        dt          j        |t                    i          }t
          j                            |          }t          |d         	                    d          t
          j
                  sJ |                                }t          j        dt          j        |d          i          }t          j        ||           d S )Nc                 V    g | ]&}t          j                    t          |           z   'S ))days)r   todayr   r.   s     r1   r2   zETestConvertDateTimeLikeTypes.test_python_datetime.<locals>.<listcomp>m  s0    NNNqhn&&):):)::NNNr3   r  r   r   r   r&   )r?   r9   r:   rm   rI   rO   rQ   rR   r   r7  TimestampArrayrS   r\   r]   )r   
date_arrayr^   rc   rd   expected_dfs         r1   test_python_datetimez1TestConvertDateTimeLikeTypes.test_python_datetimek  s    NNE"IINNN
\	*F;;;
   $$R((%(..++R->?????"" l	*4DEEE$
   	k622222r3   c           
         t          j        d          }|j        |                    d          |                    d          fD ]>}t          dddddd|          g}t          j        d	|i          }t          |           ?d S )
Npytzri  r   r   r     -   tzinfor   )	r   importorskiputcr   FixedOffsetr   r9   r:   rf   )r   ru  r   r|   r^   s        r1   %test_python_datetime_with_pytz_tzinfozBTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_tzinfo~  s    "6**8T]]<88$:J:J1:M:MN 	( 	(BtQ2r2bAAABFz6233B#B''''	( 	(r3   N)deadlinec           	          t          |          dv rt          j        d           t          dddddd|          g}t	          j        d	|i          }t          |d
           d S )N)zbuild/etc/localtimeFactoryz Localtime timezone not supportedr   r   r  rv  rw  rx  r   FrM   )r-   r   rS  r   r9   r:   rf   )r   r   r|   r^   s       r1   'test_python_datetime_with_pytz_timezonezDTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_timezone  ss     r77888K:;;;4Ar2r"===>\:v.//666666r3   c           	      
   t          j        d          }ddlm} t          dddddd|j        	          g}t          j        d
|i|          }t          |d           d} |t          |                    }|	                    |dz            }t          dddddd|	          g}t          dddddd|	          g}t          j        d
|i|          }t          j        d
|i|          }	t          ||	d           d S )Nru  r   )r   r   r   r  rv  rw  rx  r   r   Tr   )hours<   r   )
r   rz  r   r   r{  r9   r:   rf   r   r|  )
r   ru  r   r|   r^   r  tz_timezonetz_pytz
values_expdf_exps
             r1   )test_python_datetime_with_timezone_tzinfozFTestConvertDateTimeLikeTypes.test_python_datetime_with_timezone_tzinfo  s4   "6**%%%%%%4Ar2r(,GGGH\:v.f===48888 hyu55566""52:..4Ar2r+FFFGtQ2r2gFFFG
\:v.f===z:6jIIIVDIIIIIIr3   c                 4    G d dt                     } |dddddd          g}t          j        dt          j        |t                    i          }t
          j                            |          }t          |d         	                    d          t
          j
                  sJ |                                }t          j        dt          j        |d          i          }t          j        |d                   |d<   t          j        ||           d S )	Nc                       e Zd ZdZdS )NTestConvertDateTimeLikeTypes.test_python_datetime_subclass.<locals>.MyDatetimer  N)r  r  r  
nanosecondr+   r3   r1   
MyDatetimer    s        JJJr3   r    r   r   r   r   r&   )r   r9   r:   rm   rI   rO   rQ   rR   r   r7  rp  rS   to_datetimer\   r]   )r   r  rq  r^   rc   rd   rr  s          r1   test_python_datetime_subclassz:TestConvertDateTimeLikeTypes.test_python_datetime_subclass  s   	 	 	 	 	 	 	 	 !jq!Q1556
\:ry6'J'J'JKLL$$R((%(..++R->?????""
 l:5EFFFGI I #%.Z1H"I"IJ
k622222r3   c           
          G d dt                     } |ddd          g}t          j        dt          j        |t                    i          }t
          j                            |          }t          |d         	                    d          t
          j
                  sJ |                                }t          j        dt          j        t          ddd          gt                    i          }t          j        ||           d S )Nc                       e Zd ZdS )FTestConvertDateTimeLikeTypes.test_python_date_subclass.<locals>.MyDateNr  r  r  r+   r3   r1   MyDater    s        Dr3   r  r  r   r   r   r   )r   r9   r:   rm   rI   rO   rQ   rR   r   r7  Date32ArrayrS   r;   rl   r\   r]   )r   r  rq  r^   rc   rd   rr  s          r1   test_python_date_subclassz6TestConvertDateTimeLikeTypes.test_python_date_subclass  s   	 	 	 	 	T 	 	 	 fT1a(()
\629Zv#F#F#FGHH$$R((%(..++R^<<<<<""lRXtD!Q//0???@
 
 	k622222r3   c                 Z   t          j        t          ddd          d g          }t          j        |g          }|                                }t           j                            |t          j                              }|                    |	                    d                    sJ d S )N  r  rv  rp  date32)
rO   rl   r   chunked_arrayrS   ArrayrR   r  rT   rk  )r   rr   r   ro   arr2s        r1   test_datetime64_to_date32z6TestConvertDateTimeLikeTypes.test_datetime64_to_date32  s    hT2r**D122cU##KKMMx##ABIKK#88{{388H--.......r3   ru   )TFFTFFc                 *   |rt          j        |          }t          j        g d          }t          j                            |t	          j                    |          }t          j        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	          j                              }|	                    |          sJ 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ri   ru   r   r   r  r{  r  ru   ri   )
r;   rl   r9   r  rO   r  rR   date64r   rT   )r   ru   ro   rr   r   r_   s         r1   test_pandas_datetime_to_date64z;TestConvertDateTimeLikeTypes.test_pandas_datetime_to_date64  s	   
  	"8D>>DN 
 
 
   h""129;;T"BBxq"q"q"q"q"q"
   8Dt")++>>>zz(#######r3   zcoerce_to_ns,expected_dtype)Fr%   )Tr'   c                    t          ddd          d t          ddd          t          ddd          g}t          j        g dd	          }t          t          j                  t          d
          k     rd}t          j        g d|	          }t          j        |          t          j        |g          g}|D ]}|                    |          }|	                    t                    }	|j        |	j        k    sJ t          j        ||	           |                    d|          }|j        |j        k    sJ t          j        ||           d S )Nr  r       r5   rz  )
2000-01-01Nz
1970-01-01z
2040-02-26datetime64[D]r   rO  r'   coerce_temporal_nanosecondsFdate_as_objectr  )r   r;   rl   r   r9   rR  rO   r  rS   r5  rI   r   r   r   )
r   coerce_to_nsexpected_dtyper   expected_daysr_   objectsobjrd   expected_objs
             r1   test_array_types_date_as_objectz<TestConvertDateTimeLikeTypes.test_array_types_date_as_object  s    T1a  T1a  T1b!!#  "0 "0 "07FH H H 2>""WW%5%555-N8 + + +2@B B B 8D>>#TF++-  		5 		5C]]|]LLF(//77L<<#55555"6<888]]%?K # M MF<8>1111"684444		5 		5r3   zcoerce_to_ns,expected_typec                    t          j        dt          ddd          d t          ddd          t          ddd          gi          }t          j                            |d	          }|                    d|
          }|                                }t          j        |	                    |          |d           t          j        ||d           d S )Nr   r  r   r  r  r5   rz  Fr   r  Tr  )
r9   r:   r   rO   rQ   rR   rS   r\   r]   r5  )r   r  expected_typer^   rc   df_datetime	df_objects          r1   !test_table_convert_date_as_objectz>TestConvertDateTimeLikeTypes.test_table_convert_date_as_object  s     \T$1%%$1%%$2&&() * * $$R$>>ooUBN & P POO%%	
bii66*.	0 	0 	0 	0
b)>>>>>>r3   
arrow_typero   rb  rc  r  r  c                    t          ddd          t          ddd          g}t          j        |          }t	          j        |                              |          }|                    dd          }d }t          |d          r	|j	        d}t	          j
        d	|                                          }t          j        ||                    |                     d S )
Nr  r     TFr  r  r   r  r  )r   r   r9   rm   rO   rl   rk  rS   hasattrr   r  to_pandas_dtyper\   rn   r5  )r   r  r   r_   rr   rd   expected_tzr  s           r1   &test_array_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_array_coerce_temporal_nanoseconds'  s     T1a  (4A"6"679T??htnn!!*--(,U  D D:t$$ 	 )BKT;77GGII
vx}'E'EFFFFFr3   c                    t          ddd          t          ddd          g}t          j        t          j        d|          g          }t          j        d|i          }t          j        t          j        |          g|          }|	                    dd          }d }t          |d	          r	|j        d
}t          j        d|                                          }t          j        ||                    |                     d S )Nr  r   r  r   rq  TFr  r   r  r  )r   r   rO   rD   r   r9   r:   rc   rl   rS   r  r   r  r  r\   r]   r5  )	r   r  r   rD   rr  rc   	result_dfr  r  s	            r1   &test_table_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_table_coerce_temporal_nanoseconds9  s     T1a  (4A"6"67BHVZ889::lFD>22"(4..)&999OO(,U $ D D	:t$$ 	 )BKT;77GGII
i););M)J)JKKKKKr3   c                    t          j        dt          ddd          d t          ddd          t          ddd          gi          }t          j                            |d	          }t          j        dt          j                              }t          j        |g|j        j	        
          }|j        
                    |          sJ |                                }t          j        ||           d S )Nr   r  r   r  r  r5   rz  Fr   r  )r9   r:   r   rO   rQ   rR   r   r  rD   r  rT   rS   r\   r]   )r   r^   rc   r   r`   rd   s         r1   test_date_inferz,TestConvertDateTimeLikeTypes.test_date_inferL  s    \T$1%%$1%%$2&&() * *
 $$R$>>-- )UGel6KLLL|""?33333""
fb)))))r3   c                 r   t          j        t          ddd          t          ddd          gd          }ddg}t          j        |t          j        |                    }t          j        d t          ddd          gd          }t          j        |d	          }|                    |          sJ d S )
Nr  r   r   r  r   TFr  r  )r;   rl   r   rO   rT   )r   rr   ru   rd   r_   s        r1   test_date_maskz+TestConvertDateTimeLikeTypes.test_date_mask\  s    hT1a(($tQ*:*:;,. . .e}#BHTNN3338T4a#3#34OLLL8H$777v&&&&&&&r3   c           
         t          j        t          ddd          d t          ddd          t          ddd          gt                    }t          j        g dd          }|                    d          d	z  }t          j        g d
          }t          j                    }t          j                    }t          j        ||          }t          j        ||          }t          j        |||          }	t          j        |||          }
|                    |	          sJ |                    |
          sJ ddg}t
          j	        
                    ||g|          }t          j        g dd          }t          j        j        |d<   |                    d          }t          j        ||d|          }|                    d          }t!          j        ||           |                                }|                    d          }t          j        ||d|          }t!          j        ||           d S )Nr  r   r   r   r   )kC  r=  lC  mC  r   r    \&)FTFFrp  r  r  r  )z
2017-04-03
2017-04-04r  z
2017-04-05r  r   r%   )r  r  r   F)r  rI   )r;   rl   r   rI   r5  rO   r  r  rT   rQ   r   r9   NaTr  r:   rS   r\   r]   )r   rr   arr_i4arr_i8ru   t32t64a32a64a32_expecteda64_expectedcolnamesrc   	ex_valuesex_datetime64msexpected_pandastable_pandastable_pandas_objects
ex_objectsexpected_pandas_objectss                       r1   test_date_objects_typedz4TestConvertDateTimeLikeTypes.test_date_objects_typede  ss   hq!q!q!	 &,	- - - 3337CCCw''(2x33344ikkikkhs%%%hs%%%xT<<<xT<<<zz,'''''zz,''''' h'$$c3Z::X - - -$35 5 5	 v|	! $**+;<<,/2A(C (C/79 9 9 e<<
lO<<<$00%%h//
"$,*:D0F 0F7?#A #A #A 	25	7 	7 	7 	7 	7r3   c                 z   t          t          dd           }t          j        t	          ddd          t          j        |gt                    }t          j        t	          ddd          d d gt                    }t          j        |d          }t          j        |d          }|                    |          sJ |j	        dk    sJ t          j        t          j        gd          j
        t          j                    k    sJ t          j        |gd          j
        t          j                    k    sJ d S )NNAr  r   r   Tr  r5   )getattrr9   r;   rl   r   r  rI   rO   rT   ry   ri   null)r   pd_NAr|   values_with_nonerd   r_   s         r1   test_pandas_null_valuesz4TestConvertDateTimeLikeTypes.test_pandas_null_values  s    D$''8D!Q//?vNNN8XdAq%9%94$F*02 2 2&d3338,$???}}X&&&&& A%%%% xd3338BGIIEEEExT22272799DDDDDDr3   c                    t          j                    }t          j                    }t          j        g dd          }|                    d          dz  }t          j        ||          }t          j        ||          }t          ddd	          }|d
                                         |k    sJ |d
                                         |k    sJ d S )N)r  r  r  r   r   r   r  rp  r  r   r   r   )rO   r  r  r;   rl   r5  r   r  )r   t1t2rr   r  a1rB  r_   s           r1   test_dates_from_integersz5TestConvertDateTimeLikeTypes.test_dates_from_integers  s    Y[[Y[[h,,,G<<<zz'""X-Xc###Xd$$$a##!u{{}}((((!u{{}}((((((r3   c                    t          dddd          t          dddd          g}t          j        d          }t          j        |d gz   t
          	          }t          j        |          }|j        |k    sJ |d
                                         |d
         k    sJ |d                                         |d         k    sJ |d                                         J t          j	        d|i          }t          j
                            |          }|d
                             |          sJ t          j        d |D             d	          }t          j        |t          j        d                    }|d
                                         |d
         k    sJ t          j        |dz  t          j        d                    }	|	d
                                         |d
         k    sJ t          j        |dz                      d          t          j        d                    }
|
d
                                         |d
                             d          k    sJ t          j        |dz                      d          t          j        d                    }|d
                                         |d
                             d
          k    sJ d S )Nr   r5   r   L  r   r   r   rc  r   r   timesc                 ,    g | ]}t          |          S r+   _pytime_to_microsr/   vs     r1   r2   zHTestConvertDateTimeLikeTypes.test_pytime_from_pandas.<locals>.<listcomp>  !    >>>)!,,>>>r3   r   rp    r  r  rb  microsecond@B ro   )r   rO   time64r;   rl   rI   ri   r  r9   r:   rP   rR   rT   r5  time32rV   )r   pytimesr  aobjsparrr^   rE  rr   r  rB  a3a4s               r1   test_pytime_from_pandasz4TestConvertDateTimeLikeTypes.test_pytime_from_pandas  s   1a&&1a&&( Yt__D6)888xyBAw}}'!*,,,,Aw}}'!*,,,,Aw}}&&& \7E*++**2..Qxt$$$$$ h>>g>>>$& & & Xc	$000!u{{}}
****XcDjry777!u{{}}
****XsTz))$//9T??, , ,!u{{}}
 2 2t 2 D DDDDDXsW},,T229S>>+ + +!u{{}}
 2 2q 2 A AAAAAAAr3   c                    t          dddd          t          dddd          t          ddd          g}t          j        |d d         d gz             }t          j        d	 |d d         D             d gz             }t          j        d
 |d d         D             d gz             }t          j        d |D             d          }t          j        d |D             d          }t          j        g dt                    }t	          j        ||t	          j        d                    }t	          j        |dz  |t	          j        d                    }t	          j        |dz                      d          |t	          j        d                    }	t	          j        |dz                      d          |t	          j        d                    }
g d}t          j        	                    |||	|
g|          }||f||f|	|f|
|ffD ]8\  }}|
                                }|j        |k                                    sJ 9|
                                }t          j        ||||d|          }t          j        ||           d S )Nr   r5   r   r  r   r   r   r   c                 :    g | ]}|                     d           S )r  r  rV   r.   s     r1   r2   zJTestConvertDateTimeLikeTypes.test_arrow_time_to_pandas.<locals>.<listcomp>  s6      6  6  6$% !"		d	 ; ;  6  6  6r3   c                 :    g | ]}|                     d           S )r   r  r  r.   s     r1   r2   zJTestConvertDateTimeLikeTypes.test_arrow_time_to_pandas.<locals>.<listcomp>  s6     5 5 5#$  !yyQy77 5 5 5r3   c                 ,    g | ]}t          |          S r+   r  r  s     r1   r2   zJTestConvertDateTimeLikeTypes.test_arrow_time_to_pandas.<locals>.<listcomp>  r  r3   r   r   c                 ,    g | ]}t          |          S r+   r  r  s     r1   r2   zJTestConvertDateTimeLikeTypes.test_arrow_time_to_pandas.<locals>.<listcomp>  r  r3   FFTrc  r  r  r  r  rb  r  ro   )
time64[us]z
time64[ns]
time32[ms]z	time32[s]r   )r   r;   rl   r"   rO   r  r5  r  rP   r   rS   r|   allr9   r:   r\   r]   )r   r  r_   expected_ms
expected_srr   r  r  rB  r  r  r   rE  expected_valuesresult_pandasr^   rr  s                    r1   test_arrow_time_to_pandasz6TestConvertDateTimeLikeTypes.test_arrow_time_to_pandas  s   1a&&1a&&1a==" 8GBQBK4&011h  6  6)0! 6  6  6 $v & ' ' X 5 5(/5 5 5#f% & &
 h>>g>>>$& & &h>>g>>>$& & & H111>>>	Xc		$@@@XcDjy9T??, , , XsTz))$//i9T??, , ,XsW},,T229S>>+ + + HGG**BB+;UCC&((^&((^&(+%6&(*%5%7 	C 	C C  MMOOM!(O;@@BBBBBB__l(2:2=1;$= $= ,1	2 2 2 	b+.....r3   c                 >   t          j        g dd          }t          |           t          j        g dd          }t          |           t          j        g dd          }t          |           t          j        g dd	          }t          |           d S )
Nrj  r'   r   )z2007-07-13T01:23:34.123456Nz2006-01-13T12:34:56.432539z2010-08-13T05:46:57.437699r&   )re  Nrf  rg  r%   )z2007-07-13T01:23:34Nz2006-01-13T12:34:56z2010-08-13T05:46:57r$   r;   rl   r   )r   datetime64_nsdatetime64_usdatetime64_msdatetime64_ss        r1   test_numpy_datetime64_columnsz:TestConvertDateTimeLikeTypes.test_numpy_datetime64_columns  s     "- "- "-
 #$ $ $ 	+=999 "* "* "*
 #$ $ $ 	+=999 "' "' "'
 #$ $ $ 	+=999x !# !# !#
 "# # # 	+<88888r3   c                    t          t          j                  t          d          k    rt          j        d           t          j        g dt          j        d                    }t          j        t          j	        g dd                    }|
                                }t          j        ||           t          j        |g          }|
                                }t          j        ||           d S )NrO  z0pandas >= 2.0 supports non-nanosecond datetime64r   rb  )ra  )r   r9   rR  r   rS  rO   rl   r  rm   r  rS   r\   rn   r  )r   rr   r_   ro   s       r1   &test_timestamp_to_pandas_coerces_to_nszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_coerces_to_ns)  s    2>""gg&6&666KJKKKhyyy",t"4"4559R^IIIDAAABBMMOO
q(+++u%%MMOO
q(+++++r3   c           	      P   dD ]}dD ]}t          j        t          ddd          gt          j        ||                    }t          j        d|i          }d}t          j        t          |          5  |                    d	           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    d	           d d d            n# 1 swxY w Y   t          j        t          |          5  |	                    d                              d	           d d d            n# 1 swxY w Y   |                    d
d           |                    d
d           |	                    d                              d
d           d S )Nro   rb  rc  )Nr,  r   r  r   z'would result in out of bounds timestampr$  Tr  F)r?  r  )
rO   rl   r   r  rc   r   r9  r:  rS   column)r   ra  r   rr   rc   msgs         r1   &test_timestamp_to_pandas_out_of_boundszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_out_of_bounds6  s    & 	B 	BD0 B BhAq 1 12BL"4M4M4MNN#s,,?]:S999 D DMMdMCCCD D D D D D D D D D D D D D D ]:S999 F FOOOEEEF F F F F F F F F F F F F F F ]:S999 R RLL%%//D/QQQR R R R R R R R R R R R R R R 5dKKKUMMMS!!++D , B B B B'B	B 	Bs6   7BB!B C##C'*C'	*D??EEc           	      $   t          j        dt          j        g t          j        d                    i          }|                                }t          j        dt          j        g d          i          }t          j	        ||           d S )Nr   rc  rp  r&   r   )
rO   rc   r  r  rS   r9   r:   rm   r\   r]   )r   rc   rd   r_   s       r1   &test_timestamp_to_pandas_empty_chunkedzCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_empty_chunkedQ  s|    #r/d9K9KLLLMNN""<bi:J&K&K&K LMM
fh/////r3   r   c                 X    t          j        g dd          }t          ||           d S )N)
2007-07-13Nz
2006-01-15z
2010-08-19r  r   rp  r  )r   r   datetime64_ds      r1   test_numpy_datetime64_day_unitz;TestConvertDateTimeLikeTypes.test_numpy_datetime64_day_unitX  sG    x ! ! !
 "# # # 	+<eDDDDDDr3   c           	         t          j        g d          }t          j        t	          ddd          t	          ddd          t	          ddd          g          }t
          j                            ||          }t          j        d t	          ddd          d g          }t
          j                            |                              |          sJ d S )NTFTi  r   i  i  r  )	r;   rl   r9   rm   r   rO   r  rR   rT   )r   mr   rd   r_   s        r1   %test_array_from_pandas_date_with_maskzBTestConvertDateTimeLikeTypes.test_array_from_pandas_date_with_maskb  s    H((())yq!q!q!
   %%d%339dDq!$4$4d;<<x##H--44V<<<<<<<r3   z1.16.0z1.16.1z#Until numpy/numpy#12745 is resolved)reasonc                     t          j        dt          j        d          t           j        gi          }t	          |d           d S )Nr   z2012-11-11 00:00:00+01:00Fr  )r9   r:   	Timestampr  rf   r   s     r1   test_fixed_offset_timezonez7TestConvertDateTimeLikeTypes.test_fixed_offset_timezoneo  sP    
 \899
   	 666666r3   c           	      X   t          t          j                  t          d          k     rd}t          j        dt	          j        g dd| d          i          }t          j        dt          j        |                    }t          j	        |g          }t          ||           d S )	NrO  r  timedelta64)r   l     qa    @B1timedelta64[rh  r   r  r   r9   rR  r:   r;   rl   rO   r   durationrD   rf   r   ra  r^   r   rD   s        r1   test_timedeltas_no_nullsz5TestConvertDateTimeLikeTypes.test_timedeltas_no_nulls  s    2>""WW%5%555D\28$E$E$E*@*@*@*@B B B
   D(9(9::E7##"	
 	
 	
 	
 	
 	
r3   c           	      X   t          t          j                  t          d          k     rd}t          j        dt	          j        g dd| d          i          }t          j        dt          j        |                    }t          j	        |g          }t          ||           d S )	NrO  r  r0  )r   Nr1  r2  rh  r   r  r3  r5  s        r1   test_timedeltas_nullsz2TestConvertDateTimeLikeTypes.test_timedeltas_nulls  s    2>""WW%5%555D\28$<$<$<*@*@*@*@B B B
   D(9(9::E7##"	
 	
 	
 	
 	
 	
r3   c           
          ddl m} t          j        dd  |dddd          gi          }t	          j        dt	          j                    fg          }t          ||           d S )	Nr   )
DateOffsetdate_offseti  r   iX  )rn  monthsmicrosecondsnanosecondsr  )pandas.tseries.offsetsr:  r9   r:   rO   rD   month_day_nano_intervalrf   )r   r:  r^   rD   s       r1   test_month_day_nano_intervalz9TestConvertDateTimeLikeTypes.test_month_day_nano_interval  s    555555\D&JDA368 8 89
  
 ]B,F,H,HIJKK"	$ 	$ 	$ 	$ 	$ 	$r3   )6r  r  r  r  r]  r`  r   r  r  rk  rs  r}  hgivenstnonepast	timezonessettingsr  r  r  r  r  r  r  r  rO   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r&  r*  skipifr;   r   rR  r.  r6  r8  rA  r+   r3   r1   rU  rU  +  s        
 
 

 
 
 [V%<%<%<==$ $ >=$83 3 3&( ( ( QWWRWYY'((QZ7 7  )(7J J J&3 3 323 3 3"/ / / [V000&  $ $	 $2 [:7689 95 59 95: [97689 9? ?9 9?" [\'bikk929;;S8I8I*bl400,",t2D2D*bl400,",sE2J2J*bl477dE9R9R*bl477	9: :
G 
G: :
G [\'bikk929;;S8I8I*bl400,",t2D2D*bl400,",sE2J2J*bl477dE9R9R*bl477	9: :L L: :L* * * ' ' '/7 /7 /7bE E E) ) )#B #B #BJ./ ./ ./`9 9 9B, , ,B B B60 0 0 [Wyry{{IBIKK&@AAE E BAE= = = [
$ 	0778,,N1 1 0 0 0 0%gh//0 0 0 04  6 67 7	6 67 [V%<%<%<==
 
 >=
 [V%<%<%<==
 
 >=

$ 
$ 
$ 
$ 
$r3   rU  c                   F   e Zd Zd Zd Zej        j        d             Zej        j        ej        	                    dddg          d                         Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej        	                    d ej                     ej                     ej                    g          d             Zej        	                    d ej                     ej                     ej                    g          d             Zd Zd Zd ZdS )TestConvertStringLikeTypesc                 ~   d}dd ddt           j        g}t          j        d||z  i          }t	          j        dt          j                    rt	          j                    nt	          j	                              }t	          j
        |g          }g d}t          j        d||z  i          }t          |||           d S )Nr  r   rY     mañanastrings)r   NrY  rM  Nr0  )r;   rW   r9   r:   rO   r   r   r	  large_stringr  rD   rf   )r   repeatsr|   r^   r   rD   r  r_   s           r1   test_pandas_unicodez.TestConvertStringLikeTypes.test_pandas_unicode  s    ui8\9fw&6788!,!>!@!@QBObikk
 
 E7##999	<I,? @AAXvNNNNNNr3   c                 J   ddd t          d          dt          j        g}t          j        d|i          }t
          j                            |          }|d         j        t          j	                    k    sJ g d}t          j        d|i          }t          ||           d S )Nqux   foo   barzrN  r   )   quxrT  NrU  rV  N)	bytearrayr;   rW   r9   r:   rO   rQ   rR   ri   binaryrf   )r   r|   r^   rc   values2r_   s         r1   test_bytes_to_binaryz/TestConvertStringLikeTypes.test_bytes_to_binary  s    y'9'95"&I\9f-..$$R((Qx}	++++???<G 455H-----r3   c                 R   ddz  }ddz  }t          j        d|gdz  |gz   dgdz  z   i          }t          j        |d                   }t	          |t          j                  sJ |j        dk    sJ d }t          j                            |          }|d         j        dk    sJ d S )	N   x krN     r0   r5   r   )	r9   r:   rO   rl   r   ChunkedArray
num_chunksrQ   rR   )r   v1v2r^   rr   rc   s         r1   test_bytes_exceed_2gbz0TestConvertStringLikeTypes.test_bytes_exceed_2gb  s    II \tbyB4'3%"*4
   hr)}%%#r/////~""""$$R((Qx"a''''''r3   charr0   r\  c                    |dz  }|dz  }t          j        d|ggdz  |ggz   dggz   i          }t          j        |d         d          }|                    d           t          |t          j                  sJ |j        d	k    sJ t          |	                    d
                    dk    sJ t          |	                    d                    dk    sJ d S )Nr]  r^  rN  r_  r\  Tr  fullr5   r      r   )
r9   r:   rO   rl   validater   r`  ra  r   r7  )r   re  rb  rc  r^   rr   s         r1   +test_auto_chunking_pandas_series_of_stringszFTestConvertStringLikeTypes.test_auto_chunking_pandas_series_of_strings  s     II\v{rdV+vh6
   hr)}$777$#r/////~""""399Q<<  B&&&&399Q<<  A%%%%%%r3   c                    dd t          d          d d dg}t          j        d|i          }t          j        t          j        dt          j        d                    g          }t          j                            ||          }|j        d         j	        |d         j	        k    sJ |j        d         j
        |d         j
        k    sJ |                                }t          j        ||           d S )NrT     bar   heyrN  r   rq  r   )rW  r9   r:   rO   rD   r   rX  rQ   rR   ri   rk   rS   r\   r]   )r   r|   r^   rD   rc   rd   s         r1   test_fixed_size_bytesz0TestConvertStringLikeTypes.test_fixed_size_bytes  s    $	& 1 14vF\9f-..BHY	!==>??$$R$77|A#vay~5555|A#vay~5555""
fb)))))r3   c                 ^   g d}t          j        d|i          }t          j        t          j        dt          j        d                    g          }t          j        t          j                  5  t          j	        
                    ||           d d d            d S # 1 swxY w Y   d S )N)rT  Ns   baNNrn  rN  r   rq  )r9   r:   rO   rD   r   rX  r   r9  ArrowInvalidrQ   rR   )r   r|   r^   rD   s       r1   5test_fixed_size_bytes_does_not_accept_varying_lengthszPTestConvertStringLikeTypes.test_fixed_size_bytes_does_not_accept_varying_lengths  s    :::\9f-..BHY	!==>??]2?++ 	4 	4H  F 333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   3"B""B&)B&c                 v    t          j        g d          }t          |t          j                               d S )N   123r3   rJ  Nrp   )r9   rm   rs   rO   rX  r   ro   s     r1   test_variable_size_bytesz3TestConvertStringLikeTypes.test_variable_size_bytes  s7    I///00555555r3   c                    t          j        t          d          t          d          t          d          d g          }t          |t	          j                               t          |t	          j                               d S )Nru  r3   rJ  rv  rq   )r9   rm   rW  rs   rO   rX  rw  s     r1   test_binary_from_bytearrayz5TestConvertStringLikeTypes.test_binary_from_bytearray  so    Iy(()C..)D//   	 5555BIKK@@@@@@r3   c                    t          j        g d          }t          |t          j                               t          j        d|i          }t          |t          j        dt          j                    fg                     d S Nrt  rv  r   rq  )r9   rm   rs   rO   large_binaryr:   rf   rD   r   ro   r^   s      r1   test_large_binaryz,TestConvertStringLikeTypes.test_large_binary	  s    I///00):):;;;;\3(##ry3(9(9":!;<<	> 	> 	> 	> 	> 	>r3   c                    t          j        g d          }t          |t          j                               t          j        d|i          }t          |t          j        dt          j                    fg                     d S N)123r6   r   Nrv  r   rq  )r9   rm   rs   rO   rO  r:   rf   rD   r  s      r1   test_large_stringz,TestConvertStringLikeTypes.test_large_string  s    I,,,--):):;;;;\3(##ry3(9(9":!;<<	> 	> 	> 	> 	> 	>r3   c                    t          j        g d          }t          |t          j                               t          j        d|i          }t          |t          j        dt          j                    fg                     d S r}  )r9   rm   rs   rO   binary_viewr:   rf   rD   r  s      r1   test_binary_viewz+TestConvertStringLikeTypes.test_binary_view  s    I///00)9)9::::\3(##ry3(8(8"9!:;;	= 	= 	= 	= 	= 	=r3   c                    t          j        g d          }t          |t          j                               t          j        d|i          }t          |t          j        dt          j                    fg                     d S r  )r9   rm   rs   rO   string_viewr:   rf   rD   r  s      r1   test_string_viewz+TestConvertStringLikeTypes.test_string_view  s    I,,,--)9)9::::\3(##ry3(8(8"9!:;;	= 	= 	= 	= 	= 	=r3   c                 "   g d}t          j        d|i          }t          j        dt          j                              }t          j        |g          }t          j                            ||          }|                    d          }t          j        d|i          }t          j
        ||d           |                    d          }t          j        dt          j        |          i          }	t          j
        ||	d           d S )Nr6   r6   r6   r6   r6   rN  rq  Fstrings_to_categoricalTr  )r9   r:   rO   r   r  rD   rQ   rR   rS   r\   r]   Categorical)
r   r|   r^   r   rD   rc   result1	expected1r   	expected2s
             r1   test_table_empty_strz/TestConvertStringLikeTypes.test_table_empty_str%  s    %%%\9f-..BIKK00E7##$$R$77///??L)V!455	
gydCCCC///>>L)R^F-C-C!DEE	
gydCCCCCCr3   c                    g d}t          j        d|i          }t          j        dt          j                              }t          j        |g          }t          j                            ||          }t          j        d|i          }t          j        dt          j        |          i          }|	                    dg          }t          j        ||d           |	                    g           }	t          j        |	|d           |	                    d          }
t          j        |
|d           |	                    t                                }t          j        ||d           d S )Nr  rN  rq  
categoriesTr  )rN  )r9   r:   rO   r   r  rD   rQ   rR   r  rS   r\   r]   tuple)r   r|   r^   r   rD   rc   expected_strexpected_catr  r   result3result4s               r1   test_selective_categoricalsz6TestConvertStringLikeTypes.test_selective_categoricals4  sM   %%%\9f-..BIKK00E7##$$R$77|Y$788|Yv0F0F$GHH//i[/99
g|FFFF//R/00
g|FFFF//\/::
g|FFFF//UWW/55
g|FFFFFFr3   c                     t          j        g t          j                              }t           j                            |gdg          }|                    dg           d S )Nrp  re   r  r   r  )rO   rl   r   rQ   r   rS   )r   rl   rc   s      r1   &test_to_pandas_categorical_zero_lengthzATestConvertStringLikeTypes.test_to_pandas_categorical_zero_lengthF  sV    "(**---$$UGE7$CCE7+++++r3   c                    t          j        g d                                          }t           j                            |gdg          }|                    dg          }|                                                    |          sJ d S )N)r   r   r   rY  re   r  r  )rO   rl   dictionary_encoderQ   r   rS   rT   )r   rl   rc   rd   s       r1   ,test_to_pandas_categories_already_dictionaryzGTestConvertStringLikeTypes.test_to_pandas_categories_already_dictionaryM  s    55566HHJJ$$UGE7$CCUG44  ''///////r3   string_typec                 n   g d}t          j        d|i          }t          j        d|          }t          j        |g          }t          j                            ||          }|                    d          }t          j        dt          j        |          i          }t          j
        ||d           t          j        t          j                  5  |                    dd           d d d            n# 1 swxY w Y   |d                             d          }t          j        t          j        |          d          }t          j        ||           t          j        t          j                  5  |d                             dd           d d d            d S # 1 swxY w Y   d S )	N)r   r   r   r   r   rN  rq  Tr  r  r  zero_copy_onlyrj   )r9   r:   rO   r   rD   rQ   rR   rS   r  r\   r]   r   r9  rq  rm   rn   	r   r  r|   r^   r   rD   rc   rd   r_   s	            r1   (test_table_str_to_categorical_without_nazCTestConvertStringLikeTypes.test_table_str_to_categorical_without_naT  s    +**\9f-..K00E7##$$R$77==<BN6,B,B CDD
fhDAAAA]2?++ 	1 	1OO4+/  1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
 y!++4+HH9R^F33)DDD
vx000]2?++ 	< 	<)&&d6: ' < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s$   C==DD?F**F.1F.c                    d ddt           j        g}t          j        d|i          }t	          j        d|          }t	          j        |g          }t          j                            ||          }|	                    d          }t          j        dt          j
        |          i          }t          j        ||d           t          j        t          j                  5  |	                    dd           d d d            n# 1 swxY w Y   |d         	                    d          }t          j        t          j
        |          d	          }t          j        ||           t          j        t          j                  5  |d         	                    dd           d d d            d S # 1 swxY w Y   d S )
Nr   r   rN  rq  Tr  r  r  rj   )r;   rW   r9   r:   rO   r   rD   rQ   rR   rS   r  r\   r]   r   r9  rq  rm   rn   r  s	            r1   %test_table_str_to_categorical_with_naz@TestConvertStringLikeTypes.test_table_str_to_categorical_with_nao  s    S"&)\9f-..K00E7##$$R$77==<BN6,B,B CDD
fhDAAAA]2?++ 	1 	1OO4+/  1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1
 y!++4+HH9R^F33)DDD
vx000]2?++ 	< 	<)&&d6: ' < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s$   %D		DDF66F:=F:c                     t          j        t          j        dgt                    t          j                              }|j        t          j                    k    sJ d S )Nr\  r   )rO   rl   r;   rI   r  ri   )r   	converteds     r1   test_array_of_bytes_to_stringsz9TestConvertStringLikeTypes.test_array_of_bytes_to_strings  sI    HRXtfF;;;RY[[II	~,,,,,,r3   c                    t          j        t          j        j        d          5  t          j        t          j        dgt                    t          j                               d d d            d S # 1 swxY w Y   d S )Nzwas not a utf8 stringr$  s   r   )	r   r9  rO   librq  rl   r;   rI   r  r   s    r1   'test_array_of_bytes_to_strings_bad_datazBTestConvertStringLikeTypes.test_array_of_bytes_to_strings_bad_data  s    ]#-/ / / 	I 	I HRX{m6:::BIKKHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   AA44A8;A8c                    t          j        g dd          }t          j        |t          j        d                    }t          j        t	          |          t          j        d                    }|                    |          sJ t          j        g d          }t          j        |t          j        d          |          }t          j        g dt          j        d                    }|                    |          sJ t          j        t          j        j	        d	
          5  t          j        g dd          }t          j        |t          j        d                     d d d            n# 1 swxY w Y   t          j        t          j        j	        d
          5  t          j        g dd          }t          j        |t          j        d                     d d d            d S # 1 swxY w Y   d S )N)rT  rm     bazz|S3r   r   rp  FTFr  )rT  Nr  z)Got bytestring of length 3 \(expected 4\)r$  r   z*Got bytestring of length 12 \(expected 3\)z|U3)
r;   rl   rO   rX  r   rT   r   r9  r  rq  )r   rr   r  r_   ru   s        r1   ,test_numpy_string_array_to_fixed_size_binaryzGTestConvertStringLikeTypes.test_numpy_string_array_to_fixed_size_binary  s\   h///u===HSry||444	8DIIBIaLL999)))))x,,,--HSry||$???	82221FFF)))))]26.!MO O O 	- 	-(3335AAACHSry||,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
 ]#CE E E 	- 	- (3335AAACHSry||,,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s&   2AE??FF/AG==HHN) r  r  r  rQ  rZ  r   r  large_memoryrd  r  rk  ro  rr  rx  r{  r  r  r  r  r  r  r  r  rO   r  rO  r  r  r  r  r  r  r+   r3   r1   rK  rK    s5       O O O	. 	. 	. [( ( (  [[Vc4[11& & 21 &* * *4 4 46 6 6A A A> > >> > >= = == = =D D DG G G$, , ,0 0 0 [		_R_%6%68H8HI < < <0 [		_R_%6%68H8HI < < <2- - -I I I- - - - -r3   rK  c                   $   e Zd ZdZ ej        d           ej        d          gZ ej        d           ej        d          gZ ej        d           ej        d          gZe	j
                            d e	j        e ej        d	d
          d           e	j        e ej        dd          d           e	j        e ej        dd          d          g          d             Ze	j
                            d e	j        ed           e	j        ed           e	j        ed          g          d             Zd Zd Zd Zd Zd Ze	j
                            dej        ej        ej        ej        g          d             ZdS )TestConvertDecimalTypesz,
    Conversion test for decimal types.
    z	-1234.123z1234.439z-129934.123331z129534.123731ry  z-314292388910493.12343437128)r|   r  r   r   r  idr  r   r  rz  r{  r  c                    t          j        d|i          }t          j                            |d          }t          j        d|          }t          j        |g|j        j                  }|j                            |          sJ d S )Nrx  Fr   r  )	r9   r:   rO   rQ   rR   r   rD   r  rT   )r   r|   r  r_   rc   r   r`   s          r1   test_decimal_from_pandasz0TestConvertDecimalTypes.test_decimal_from_pandas  s     <V 455$$Xe$DD]33 )UGel6KLLL|""?3333333r3   r|   c                     t          j        d|i          }t          j                            |          }|                                }t          j        ||           d S )Nrx  )r9   r:   rO   rQ   rR   rS   r\   r]   )r   r|   r_   r  r^   s        r1   test_decimal_to_pandasz.TestConvertDecimalTypes.test_decimal_to_pandas  sW     <V 455H((22	  ""
b(+++++r3   c                    t          j        d          g}t          j        dd          }t	          j        t          j                  5  t          j        ||           d d d            n# 1 swxY w Y   t          j        d          g}t          j        dd          }t	          j        t          j                  5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nz1.234r  r5   rp  z1.2345r   )r   r   rO   r  r   r9  rq  rl   )r   data1type1data2type2s        r1   "test_decimal_fails_with_truncationz:TestConvertDecimalTypes.test_decimal_fails_with_truncation  sQ   ))*b!$$]2?++ 	( 	(HU''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( **+b!$$]2?++ 	( 	(HU''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s$   	A,,A03A0?C##C'*C'c                    t          j        d          t          j        d          g}t          j        |          }t	          j        |          }|                                |k    sJ |j        t	          j        dd          k    sJ t	          j        |t	          j        dd                    }t          j        d          t          j        d          g}|                                |k    sJ d S )	Nz0.01z0.001r   r  r   rp  z0.01000z0.00100)	r   r   r9   rm   rO   rl   r  ri   r  )r   r   seriesrl   r_   s        r1   &test_decimal_with_different_precisionsz>TestConvertDecimalTypes.test_decimal_with_different_precisions  s    OF##OG$$
 4    D((((zR]1a000000BM"a$8$8999OI..	0J0JK  H,,,,,,r3   c                    t          j        t          j        d          d g          }t	          |t          j        dd                     t          j        d gdz            }t	          |t          j        dd                     d S )Nr  r  r   rv  r5   r9   rm   r   r   rs   rO   r  r   r  s     r1   $test_decimal_with_None_explicit_typez<TestConvertDecimalTypes.test_decimal_with_None_explicit_type  s{    GOF33T:;;bmB.B.BCCCC D6A:&&bmB.B.BCCCCCCr3   c                     t          j        t          j        d          d g          }t	          |t          j        dd                     d S )Nr  r   r5   rz  r  r  s     r1   !test_decimal_with_None_infer_typez9TestConvertDecimalTypes.test_decimal_with_None_infer_type  sE    GOF33T:;;q!9L9LMMMMMMr3   c                     ddidt          j        d          id}t          j                            |          }t          |           d S )Nr   r   z0.0r4  )r   r   r9   r:   	from_dictrf   )r   tmpdirr   r^   s       r1   test_strided_objectsz,TestConvertDecimalTypes.test_strided_objects  sT     SW_U++,
 
 \##D))#####r3   r  c                     t          j        d          d g}t          j        | |dd                    }|                                }t          j        |          }t          j        ||           d S )Nr  r   r5   rp  )	r   r   rO   rl   rS   r9   rm   r\   rn   )r   r  r   rr   rd   r_   s         r1   test_decimal_array_to_pandasz4TestConvertDecimalTypes.test_decimal_array_to_pandas
  si     ''.ht##a)),,,9T??
vx00000r3   N)r  r  r  r  r   r   r  r  r  r   r  r  paramrO   r  r  r  r  r  r  r  r  r  r+   r3   r1   r  r    sI         	$$
##I
 	())((I
 	566677J
 [8Ya 3 3DDDYb! 4 4EEEZr2!6!6<HHH;  
4 4 
4 [XY;///Y;///ZL111(  
, , 
,	( 	( 	(- - -D D DN N N	$ 	$ 	$ [U



	%  1 1 1 1 1r3   r  c            
          e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dej        ddgdgdgddgdgfej        ddgdgdgddgdgfej        ddgdgdgddgdgfg          d             Z d  Z!d! Z"d" Z#d# Z$d$ Z%ej        j&        d%             Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-ej                            d,ej.        ej/        g          d-             Z0ej                            d,ej.        ej/        g          d.             Z1ej                            d,ej.        ej/        g          d/             Z2ej                            d,ej.        ej/        g          d0             Z3ej                            d,ej.        ej/        g          d1             Z4dS )2TestConvertListTypesz,
    Conversion tests for list<> types.
    c                 |   t                      \  }}t          |||           t          j                            ||d          }|                    |j        j                  }|j                            |          sJ |j	        D ]3}|
                    |          }t          ||         |j                   4d S NrD   r`   Fr6  rp  )r   rf   rO   rQ   rR   with_metadatarD   r  rT   rU   r   r~   ri   r   r^   rD   rc   r`   r  r   s          r1   test_column_of_arraysz*TestConvertListTypes.test_column_of_arrays  s    *,,
F66JJJJ$$Ru$MM !..u|/DEE|""?33333j 	@ 	@FLL((E"2f:EJ?????	@ 	@r3   c           	         d}t          j        t          j        d|          t          j        d|          d t          j        d|          gt                    }t	          j        t	          j                              }t	          j        ||          }|d                                         t          t          d                    k    sJ |d                                         t          t          d                    k    sJ |d                                         J |d	                                         dgk    sJ d S )
Nr  r  r   r   r   rp  r   r5   r   )
r;   rl   r<   rI   rO   rr  r   r  r   r?   )r   r   rr   rp   r   s        r1   test_column_of_arrays_to_pyz0TestConvertListTypes.test_column_of_arrays_to_py*  s   hIb&&&Iau%%%Iau%%%	

    ##x%(((Aw}}$uRyy//1111Aw}}$uQxx..0000Aw}}&&&Aw}}1#%%%%%%r3   c                    t          j        ddgdggt          j        t          j                                        }t           j                            |gdg          }|                                }t          j        dddgdggi          }t          j
        ||           |d                                         }t          j        t          j        |          |d         d           d S )NTFrp  r  r   r   rv   )rO   rl   rr  r  rQ   r   rS   r9   r:   r\   r]   rn   rm   )r   rl   rc   r^   rr  ro   s         r1   test_column_of_boolean_listz0TestConvertListTypes.test_column_of_boolean_list;  s    4-$0rx

7K7KLLL$$eWVH$==__lFdE]TF,C#DEE
b+...!H  
ry||RZUKKKKKKr3   c           	      ,   t          j        t          j        d          t          j        d          gt          j        d          ggt          j        t          j        dd                              }t           j                            |gdg          }|                                }t          j
        dt          j        d          t          j        d          gt          j        d          ggi          }t          j        ||           d S )	Nr   rK  z3.3r5   r   rp  r  r   )rO   rl   r   r   rr  r  rQ   r   rS   r9   r:   r\   r]   )r   rl   rc   r^   rr  s        r1   test_column_of_decimal_listz0TestConvertListTypes.test_column_of_decimal_listG  s    7?3//1E1EF"?51124 hr}Q':':;;= = = $$eWVH$==__lws++W_S-A-ABu--.0 12 2 	b+.....r3   c                    t          j        t          j        t          j        t          j        gt
                              }t          j        t          j                              t          j	        t          j                              t          j
        t          j        dd          g          fD ]}t          j        ||          }t          j        d d g|          }|                    |          sJ t          j        t                    5  t          j        |j        |           d d d            n# 1 swxY w Y   d S )Nr   f0r   rp  )r9   rm   r;   rl   rW   rI   rO   rr  r   
large_liststructr   rT   r   r9  	TypeErrorr|   )r   ro   r9  rd   r_   s        r1   +test_nested_types_from_ndarray_null_entriesz@TestConvertListTypes.test_nested_types_from_ndarray_null_entriesS  sI   Ibh/v>>>??8BHJJ''=,,9bhtW556779 	, 	,B Xab)))Fxt2666H==*****y)) , ,++++, , , , , , , , , , , , , , ,	, 	,s   D==E	E	c                 |   t                      \  }}t          |||           t          j                            ||d          }|                    |j        j                  }|j                            |          sJ |j	        D ]3}|
                    |          }t          ||         |j                   4d S r  )r   rf   rO   rQ   rR   r  rD   r  rT   rU   r   r~   ri   r  s          r1   test_column_of_listsz)TestConvertListTypes.test_column_of_listsa  s    )++
F66JJJJ$$Ru$MM !..u|/DEE|""?33333j 	@ 	@FLL((E"2f:EJ?????	@ 	@r3   c                     g g dg dg dgg}t          j        d |D                       }t          j        |          }t          j        |                                          }t          j        ||           d S )Nro  )r   r   r   r   r5   c                 D    g | ]}t          j        |t                     S )r   )r;   rl   float)r/   ro   s     r1   r2   zITestConvertListTypes.test_column_of_lists_first_empty.<locals>.<listcomp>q  s'    HHHBHQe444HHHr3   )r9   rm   rO   rl   rS   r\   rn   )r   	num_listsr  rr   rd   s        r1    test_column_of_lists_first_emptyz5TestConvertListTypes.test_column_of_lists_first_emptyn  sy    LLL"qc:	HHiHHHIIhv3==??++
vv.....r3   c                 <   t          j        dt          j        ddgd ddgddgddgd	d
ggt                    i          }t          j        t          j        dt          j        t          j	                                        g          }t
          j
                            |d d         |          }t
          j
                            |dd          |          }t          j        ||g          }|                                }t          j        ||           d S )Nlistsr   r5   r   r   r   r   r   r   	   r   rq  )r9   r:   r;   rl   rI   rO   rD   r   rr  r   rQ   rR   concat_tablesrS   r\   r]   )r   r^   rD   r  r  rc   rd   s          r1   test_column_of_lists_chunkedz1TestConvertListTypes.test_column_of_lists_chunkedv  s   \RXAAAAA   	
 	 	 HWbhrxzz2233
   X!!"RaR&!88X!!"QRR&!88 "b**""
fb)))))r3   c           	         t          j        dt          j        g t                    i          }t          j        t          j        dt          j        t          j	                                        g          }t
          j
                            ||          }|                                }t          j        ||           d S )Nr  r   rq  )r9   r:   r;   rl   rI   rO   rD   r   rr  r   rQ   rR   rS   r\   r]   )r   r^   rD   rc   rd   s        r1   "test_empty_column_of_lists_chunkedz7TestConvertListTypes.test_empty_column_of_lists_chunked  s    \RXb///
   HWbhrxzz2233
   $$R$77""
fb)))))r3   c           	         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          j        |          }t          j        |          }t           j                            |gdg          }t           j                            |gdg          }t          j        ||g          }|                                }t          j        d||z   i          }	t          j	        ||	           d S )Nr   r   r5   r   r   r   r   r   r  r{  r                 r   r        r   r   )
rO   rl   rQ   r   r  rS   r9   r:   r\   r]   )
r   r  r  r  rB  r  r  concatenatedrd   r_   s
             r1   test_column_of_lists_chunked2z2TestConvertListTypes.test_column_of_lists_chunked2  s    Q!Q!Q!Q"bbB8b"X/Q"b"Xe__Xe__X!!2$se!44X!!2$se!44'R11''))<eem 455
fh/////r3   c                     t                      \  }}t          j        |gdz  d          }|d         j        d d d         }|j        d         dk    sJ t          |           d S )Nr   T)ignore_indexr   r   r   r   )r   r9   concatr|   stridesr~   )r   r^   rD   rr   s       r1   test_column_of_lists_stridedz1TestConvertListTypes.test_column_of_lists_strided  sm    )++
FYtaxd333k 1%{1~""""s#####r3   c           	      B   t          j        d d gd gt                    }t          j        |          }t          j        t	          |                    }|                    |          sJ |j        t          j        t          j                              k    sJ t          j        d d d d gt          j        d d gt                    gt                    }t          j        |          }t          j        d d d d gd d gg          }|                    |          sJ d S )Nr   )	r;   rl   rI   rO   r   rT   ri   rr  r  )r   r   rr   r_   r  s        r1   test_nested_lists_all_nonez/TestConvertListTypes.test_nested_lists_all_none  s   x$t,F;;;htnn8DJJ''zz(#####x28BGII......$tTl(D$<v>>>@%' ' ' huoo8T4$d|DEEzz(#######r3   c                 ,   t          j        g g g g          }t          j        |          }t          j        t	          |                    }|                    |          sJ |j        t          j        t          j                              k    sJ d S N)	r9   rm   rO   rl   r   rT   ri   rr  r  r   r   rr   r_   s       r1   test_nested_lists_all_emptyz0TestConvertListTypes.test_nested_lists_all_empty  sz    y"b"&&htnn8DJJ''zz(#####x28BGII........r3   c                 ,   t          j        g dgg          }t          j        |          }t          j        t	          |                    }|                    |          sJ |j        t          j        t          j                              k    sJ d S )Nr   )	r9   rm   rO   rl   r   rT   ri   rr  r  r
  s       r1   test_nested_list_first_emptyz1TestConvertListTypes.test_nested_list_first_empty  sz    y"se%%htnn8DJJ''zz(#####x28BIKK00000000r3   c                    t          j        t          j        g dd          d g          }t	          j        |          }t	          j        |j                  }t	          j        g dd gt	          j        t	          j                                        }|                    |          sJ |                    |          sJ t          j        t          j        g dd          d g          }t	          j        |          }t	          j        g dd gt	          j        t	          j	                                        }|                    |          sJ d S )Nr   r  r   rp  r  )
r9   rm   r;   rl   rO   r|   rr  r   rT   r    )r   r   rd   r   r_   data3r  	expected3s           r1   test_nested_smaller_intsz-TestConvertListTypes.test_nested_smaller_ints  s%    y"(999D9994@AA$(4;''8YYY-BHRWYY4G4GHHH}}X&&&&&~~h'''''	28IIIT:::DABB(5//Hiii.RXbjll5K5KLLL	~~i(((((((r3   c                    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          j        |          }t          j        t          j        dt          j        t          j	                                        t          j        dt          j        t          j	                                        t          j        dt          j        t          j
                                        t          j        dt          j        t          j        t          j
                                                  g          }t          ||           d S )Nnan_intsr   r5   r   r<  r   strsr   r   dnested_strsr  )r   r;   rW   r9   r:   rO   rD   r   rr  r   r  rf   r   r   r^   r`   s       r1   test_infer_listsz%TestConvertListTypes.test_infer_lists  s9   261+1v./q!fq!f%&tSkC:./tSkC:6=>	
   \$)HZ"(**!5!566HVRXbhjj1122HVRXbikk2233H]BHRXbikk-B-B$C$CDD	%
   	 ODDDDDDr3   c                    t          j        t          j                    d          }t          j        t          j                              }g dd g dg dg}t          j        ||          }t          j        ||          }|                                }|                                }t          ||          D ] \  }}	||	J t          j        ||	           !d S )Nr   )	list_size)r   r   r5   r   r   )r   r  r  r{  rp  )rO   rr  r   rl   rS   r  r   r   )
r   fixed_tyvariable_tyr   	fixed_arrvariable_arrrd   r_   leftrights
             r1   test_fixed_size_listz)TestConvertListTypes.test_fixed_size_list  s    8BHJJ!444hrxzz**dLLL...AHT111	x;777$$&&))++vx00 	0 	0KD%|}}}"4////	0 	0r3   c           	         t          dt          j        ddgt          j                  t          j        ddgt          j                  gfg          }t	          j        |          }t          j        t          j        dt          j	        t          j                                        g          }t          ||           d S )Nr<  r   r   r   r5   r   r  )r   r;   rl   r   r9   r:   rO   rD   r   rr  rf   r  s       r1   test_infer_numpy_arrayz+TestConvertListTypes.test_infer_numpy_array		  s    !Qrx000!Qrx000 
   \$)HVRXbhjj1122%
   	 ODDDDDDr3   c                    t          j        g dt          j                              }t          j        ddgddgddggt          j        t          j                                        }t           j                            ||gdd	g          }t           j                            g d
|          }t          j	        dddgdgdddgddddgdgg          }t          j	        |
                                          }t          j                    5  t          j        ddt                     t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r  eff1r  )r   r   r   r   )r'  r  r5   r   rJ   rK   )rO   rl   r   rr  r  StructArrayr   	ListArrayr9   rm   rS   rX   rY   rZ   r[   r\   rn   )r   r<  rN  structsr   r_   r  s          r1   test_to_list_of_structs_pandasz3TestConvertListTypes.test_to_list_of_structs_pandas	  s   x			28::..(S#Jc
S#J?8BIKK002 2.,,dG_tTlKK|''			7;;9c3Z(()c3Z((c3Z((*
   4>>++,, $&& 	5 	5#H.M$68 8 8"68444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   1EEEc                    t          t          j                  t          d          k    r>t          t          j                  t          d          k     rt	          j        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          j        |t          j        t          j	        t          j
                    t          j        t          j
                                                            }|                                }t          j        |          }t          j                    5  t          j        ddt                      t#          j        ||           d d d            d S # 1 swxY w Y   d S )N1.25.0.dev0rO  $Regression in pandas with numpy 1.25r   r   r   rY  r   r  rh  rS  Nquuxr%  quzr&  grJ   rK   )r   r;   rR  r9   r   rS  rO   rl   rr  map_utf8rS   rm   rX   rY   rZ   r[   r\   rn   )r   r   rr   r  r_   s        r1   test_to_list_of_maps_pandasz0TestConvertListTypes.test_to_list_of_maps_pandas-	  s   R^$$(>(>>>((77+;+;;; K>???sCj!EC:#678bk=6D#;*?@ECQT:CVBWX
 htRXbgbgii"'))9L9L&M&MNNOO9T?? $&& 	5 	5#H.M$68 8 8"68444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   11E//E36E3c           
      D   t          t          j                  t          d          k    r>t          t          j                  t          d          k     rt	          j        d           t          j        g d                              dd          }t          j        dgdgdd	gd
dgg dddggt          j	        t          j
                                                            dd          }t          j                            g d||          }t          j                            g d|          }|                                }t          j        ddd	gfdd
dgfggdg fdggg          }|                    dd                                          }t          j        dg fdggg          }t!          j                    5  t!          j        ddt&                     t)          j        ||           t)          j        ||           ddd           dS # 1 swxY w Y   dS )zL
        A slightly more rigorous test for chunk/slice combinations
        r-  rO  r.  )rJ   r   rY  rh  rS  r0  rJ   r   r   rJ   r   r   r   r  Nr%  r5   r   r5   r   r   r   rY  rh  r/  rK   )r   r;   rR  r9   r   rS  rO   rl   slicerr  r  MapArrayr   r)  rS   rm   rX   rY   rZ   r[   r\   rn   )	r   r  itemsmaprr   r  r_   series_slicedexpected_sliceds	            r1   "test_to_list_of_maps_pandas_slicedz7TestConvertListTypes.test_to_list_of_maps_pandas_slicedB	  sr   
 R^$$(>(>>>((77+;+;;; K>???x 2 2 2 3 3385A;; 	Z(c3Z#sRc{SHRY[[!!
 
 %1++ 	 k%%iiiu==l&&yyy#669sCj!EC:#678bk=)*
  
 		!Q1133)bk=)*%
   $&& 	C 	C#H.M$68 8 8"68444"=/BBB		C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   AHHHzt,data,expectedr   r5   r   Naaabbr   c                 r   t          j        g d          }t          j        |          }t          j                            ||t	          j         |                                }t          j                            |t	          j         |                                                    |          sJ d S )Nr(  r  rp  )	r;   rl   r9   rm   rO   r  rR   rr  rT   )r   r  r   r_   r)  ro   rd   s          r1   ,test_array_from_pandas_typed_array_with_maskzATestConvertListTypes.test_array_from_pandas_typed_array_with_maski	  s    $ H((())IdOO%%aabhqqssmm%DDx##H)+!!## $ 8 88>v	G 	G 	G 	G 	Gr3   c                 L   t          j        dt                    }|                    g            t	          j        t          j        g d          |d          }t          j        	                    |          }|
                                }t          j        ||           d S )N)r   r   )r   rK  3r4  )r;   emptyrI   fillr9   r:   rl   rO   rQ   rR   rS   r\   r]   )r   empty_list_arrayr^   r  rd   s        r1   test_empty_list_roundtripz.TestConvertListTypes.test_empty_list_roundtrip	  s    8D777b!!!\ 9 9 02 2 3 3h""2&&
fb)))))r3   c                     t                      \  }}|D ]y}||j                 j        }t          j        t          |          |j                  }t          j        |          }|j        |j        k    sJ |                    |          sJ zd S )Nrp  )r   rk   r|   rO   rl   r   ri   rT   )r   r^   rD   r   rr   r_   rd   s          r1   test_array_from_nested_arraysz2TestConvertListTypes.test_array_from_nested_arrays	  s    *,,
F 	+ 	+EUZ.'CxS		
;;;HXc]]F;%*,,,,==******	+ 	+r3   c           	          t          j        g ddggd gt          j        t          j        t          j                                                                                  }t          j                    5  t          j        ddt                     t          j        ddt                     t          j        |t          j        g ddggd gt                    d	           d d d            d S # 1 swxY w Y   d S )
Nr   r   rp  rJ   z&Creating an ndarray from ragged nestedrK   r   Frv   )rO   rl   r  r   rS   rX   rY   rZ   _np_VisibleDeprecationWarningr[   r\   rn   r9   rm   rI   rw  s     r1   test_nested_large_listz+TestConvertListTypes.test_nested_large_list	  sK   X			A3'.=rxzz)B)BCCE E Eikk 	
 $&& 	# 	##H$L$AC C C #H.M$68 8 8"29yyy1#.5VDDD!# # # #	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   8A.C33C7:C7c           
          t           j        t           j        fD ]}t          j        ddgd dgg g |t          j                                                                        }t          j        |t          j	        ddgd dgg g          d	           t          j        ddgd dgg g |t          j
                                                                        }t          j        |t          j	        ddgd dgg g          d	           d S )
Nr8  r@  ccrp  s   aas   bbs   ccFrv   )rO   rr  r  rl   r~  rS   r\   rn   r9   rm   rO  )r   list_type_factoryro   s      r1   test_large_binary_listz+TestConvertListTypes.test_large_binary_list	  s>   "$(BM!: 	# 	#D$<vr:001B1BCCE E E)++  "29uendUGR@AA!# # # # D$<vr:001B1BCCE E E)++  "29tTlD4&"=>>!# # # # #	# 	#r3   c                    t          j        g d                                          }t           j                            g d|          }t          j        |                                          }t          j	        |
                                |           |                    g d          }d |d<   t          j	        |
                                |           d S )N)r   rY  Nr   )r   r   r   r   r   )r   r   Nr   r5   )rO   rl   r  r)  r   r9   rm   r  r\   rn   rS   take)r   childrr   r_   s       r1   test_list_of_dictionaryz,TestConvertListTypes.test_list_of_dictionary	  s    44455GGIIl&&>> 9S]]__--
s}}999 hh''
s}}99999r3   c                    d}t           j                            t          t	          j        |dfd                    t          |          d          }t          j        	                    |          }|
                    d           |d         }|j        d	k    sJ t          |                    d                    d
k    sJ t          |                    d                    dk    sJ d S )Ni    i   r   r   r4  Trg  r   r5   i r   )r9   r:   r  r   r;   zerosr?   rO   rQ   rR   rj  ra  r   r7  )r   nr^   rc   column_as        r1   #test_auto_chunking_on_list_overflowz8TestConvertListTypes.test_auto_chunking_on_list_overflow	  s     \##bh5z999::q%
 %
   $$R((D!!!8"a''''8>>!$$%%22228>>!$$%%******r3   c                    ddgdgg ddgg}t          j        d|i          }t          j        dt          j        t          j                    t          j                              fg          }t          ||           d S )NrJ  r      br5      cr      dr      er   )   fr      gr   r;  rq  )r9   r:   rO   rD   r3  rX  r   rf   )r   r   r^   rD   s       r1   test_map_array_roundtripz-TestConvertListTypes.test_map_array_roundtrip	  s    I&111
 \5$-((UBGBIKK$D$DEFGG6222222r3   c                    ddgdgg ddgg}d |D             }t          j        |t          j        t          j                    t          j                                        }t          j        |t          j        t          j                    t          j                                        }t          j        ||g          }t          j        ||z             }|                                }t          j
        ||d	           d S )
Nr\  r]  r_  ra  rg  c                 &    g | ]}d  |D             S )c                 "    g | ]\  }}||d z  fS )r5   r+   r/   kr  s      r1   r2   zJTestConvertListTypes.test_map_array_chunked.<locals>.<listcomp>.<listcomp>	  s$    ---A1a!e*---r3   r+   r/   rows     r1   r2   z?TestConvertListTypes.test_map_array_chunked.<locals>.<listcomp>	  s'    ???#-----???r3   rp  Frv   )rO   rl   r3  rX  r   r  r9   rm   rS   r\   rn   )r   r  r  arr1r  rr   r_   actuals           r1   test_map_array_chunkedz+TestConvertListTypes.test_map_array_chunked	  s    Y'222 @????xBGBIKK$D$DEEExBGBIKK$D$DEEEd|,,9UU]++
vxUCCCCCCr3   c                 H   ddgd g ddgg}d |D             }t          j        |          }t          j        |t          j        t          j                    t          j                                        }|                                }t          j	        ||d           d S )	Nr\  r]  )rb  rd  )rf  Nrg  c                 .    g | ]}|d |D             nd S )Nc                 >    g | ]\  }}||t          |          nd fS r	  )r  rm  s      r1   r2   zMTestConvertListTypes.test_map_array_with_nulls.<locals>.<listcomp>.<listcomp>	  s/    NNN$!QaQ]q=NNNr3   r+   ro  s     r1   r2   zBTestConvertListTypes.test_map_array_with_nulls.<locals>.<listcomp>	  sG     B B B58s ON#NNNN,0B B Br3   rp  Frv   )
r9   rm   rO   rl   r3  rX  r   rS   r\   rn   )r   r   r_   rr   rr  s        r1   test_map_array_with_nullsz.TestConvertListTypes.test_map_array_with_nulls	  s    I&444B B<@B B B9X&&ht"'")++rxzz"B"BCCC
vxUCCCCCCr3   c           	         t          j        g d          }t          j        g d                                          }t          j        t          t	          t          |                                        }t           j                            |||          }t          j	        g dddgg          }|
                                }t          j        ||d           d S )Nr   r   r   )r   r   r   r   r  ))r   r   )r   r   )r5   r   )r   r   )r   r  Frv   )rO   rl   r  r   r?   r   r9  r   r9   rm   rS   r\   rn   )r   offsetsr:  r  rr   r_   rr  s          r1   !test_map_array_dictionary_encodedz6TestConvertListTypes.test_map_array_dictionary_encoded	  s    (999%%22233EEGGxU3u::..//00k%%gtU;; 9+++h-ABD D 
vxUCCCCCCr3   c           	         t          j        ddgg dd dd gddgg          }t          j        |                    dd          |                    dd          g          }|                                }t          j        d	d
gg dd dt
          j        ggd          }t          ||          D ]%\  }}|	||k    sJ t          j	        ||           &t          j        d	d
ddddt
          j        gg          }t          j	        |d         j
        |           |                    dd                                          }t          j        g dd dt
          j        ggd          }t          ||          D ]%\  }}|	||k    sJ t          j	        ||           &t          j        ddddt
          j        gg          }t          j	        |d         j
        |           d S )Nr   r5   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   rI   r   r   r   r   )rO   rl   r  r8  to_numpyr;   rW   r  r   r   base)	r   rr   chunked_arrr	  r_   r  r   expected_basenp_arr_sliceds	            r1   test_list_no_duplicate_basez0TestConvertListTypes.test_list_no_duplicate_base	
  s   hA			4!TQFCDD&		!Q1a'IJJ%%''8b"X|||TL*19; ; ;vx00 	4 	4KD%}u}}}}}&tU33332r2r2r26"B!CDDvay~}===#))!Q//88::8YYYq"&k:(KKK}h77 	4 	4KD%}u}}}}}&tU33332r2r26":!;<<}Q/4mDDDDDr3   c                    t           j                            t          j        g d          t          j        g d          t          j        g d                    }|                    d          }t          j        ddgd d	t
          j        ggd
          }t          ||          D ]%\  }}|	||k    sJ t          j	        ||           &d S )Nr   r5   r   r   )r   r5   c   r  r   Nr  )rz  r|   ru   Fr  r   r   r   rI   r   )
rO   r)  r   rl   r}  r;   rW   r  r   r   )r   rr   r	  r_   r  r   s         r1   test_list_values_behind_nullz1TestConvertListTypes.test_list_values_behind_null'
  s    l&&H\\\**833344...// ' 
 

 U338b"Xtb"&\:(KKKvx00 	4 	4KD%}u}}}}}&tU3333		4 	4r3   rb   c                 :   |                     t          j        g d          t          j        g d          t          j        g d                    }|                                }t	          j        ddgddgd	d
gg          }t          j        ||           d S )Nr7  r5   r5   r5   r   r5   r   r   r   r   rz  sizesr|   r   r5   r   r   r   r   r   rO   rl   rS   r9   rm   r\   rn   r   rb   rr   rr  r_   s        r1   .test_list_view_to_pandas_with_in_order_offsetszCTestConvertListTypes.test_list_view_to_pandas_with_in_order_offsets6
      HYYY''(999%%8...//   
 
 9q!fq!fq!f566
vx00000r3   c                 :   |                     t          j        g d          t          j        g d          t          j        g d                    }|                                }t	          j        ddgddgd	d
gg          }t          j        ||           d S )N)r5   r   r   r  r  r  r   r   r   r   r   r5   r  r  s        r1   2test_list_view_to_pandas_with_out_of_order_offsetszGTestConvertListTypes.test_list_view_to_pandas_with_out_of_order_offsetsC
  r  r3   c                 :   |                     t          j        g d          t          j        g d          t          j        g d                    }|                                }t	          j        g dg dg dg          }t          j        ||           d S )Nr   )r   r   r   r  r  r   )r5   r   r   r   )r   r   r   r   r  r  s        r1   1test_list_view_to_pandas_with_overlapping_offsetszFTestConvertListTypes.test_list_view_to_pandas_with_overlapping_offsetsP
  s    HYYY''(999%%8...//   
 
 9lllLLL,,,GHH
vx00000r3   c           	      p   |                     t          j        g d          t          j        g d          t          j        dd g          t          j        g d                    }|                                }t	          j        dt          j        gg d g          }t          j	        ||           d S )N)r   r5   r5   )r5   r   r   r   r
  rz  r  r|   ru   )
r   rO   rl   rS   r9   rm   r;   rW   r\   rn   r  s        r1   )test_list_view_to_pandas_with_null_valuesz>TestConvertListTypes.test_list_view_to_pandas_with_null_values]
  s    HYYY''(999%%8QI&&...//	   
 
 9q"&k2t455
vx00000r3   c           	         t          j                     t          j                    }|                    t          j        g d          t          j        g d          t          j        g d                    }|                    t          j        g d          t          j        g d          t          j        g d          t          j        g d          	          }t          j        ||g          }|                                }t          j	        d
dgdd
gddgg dddt          j        gd g          }t          j        ||           ~~~~t          j                    }||k    sJ d S )N)r5   r   r   r  r   r  )r   r   r   )r   r   r   )r   r   r   Nr
  r  r   r   r5   r   )r   r   r   r   r   )gccollectrO   total_allocated_bytesr   rl   r  rS   r9   rm   r;   rW   r\   rn   )	r   rb   bytes_startrq  r  rr   rr  r_   	bytes_ends	            r1   (test_list_view_to_pandas_multiple_chunksz=TestConvertListTypes.test_list_view_to_pandas_multiple_chunksk
  sg   

.00  HYYY''(999%%8LLL)) ! 
 

   HYYY''(999%%8OOO,,...//	 ! 
 
 d|,,9q!fq!fq!fiii!QQUVWW
vx000,..	K''''''r3   )5r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r!  r#  r+  r5  r>  r   r  r  rO   r   r  r  rB  rH  rJ  rM  rQ  rU  r  rZ  ri  rs  rw  r{  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r+   r3   r1   r  r    s        @ @ @& & &"
L 
L 
L
/ 
/ 
/, , ,@ @ @/ / /* * *2* * *0 0 0$$ $ $$ $ $/ / /1 1 1) ) )E E E$0 0 0"E E E5 5 5,5 5 5*%C %C %CN [.HVaS$A3	
 IT]SE4(C5$	
 GD\D64(D64 	
1  "G G# "G
* 
* 
*+ + +# # ## # #: : : [+ + +	3 	3 	3D D DD D DD D DE E E<4 4 4 [Wr'79N&OPP
1 
1 QP
1 [Wr'79N&OPP
1 
1 QP
1 [Wr'79N&OPP
1 
1 QP
1 [Wr'79N&OPP1 1 QP1 [Wr'79N&OPP( ( QP( ( (r3   r  c                       e Zd ZdZd Zd Zd Zd Zd Ze	j
        j        e	j
        j        d                         Zd Zd	 Zd
 ZdS )TestConvertStructTypesz,
    Conversion tests for struct types.
    c           	      *   t          j        dddddddgi          }t          j        dt          j        dt          j                    fdt          j                    fg          fg          }t          ||	           t          |||
           d S )Nru  r   r5   r4  r   r   r   r   r  r  )r9   r:   rO   rD   r  r   rf   )r   r^   r`   s      r1   test_pandas_roundtripz,TestConvertStructTypes.test_pandas_roundtrip
  s    \711%5%5QQ7G7G$HIJJ)bi#rxzz!2S"(**4E FGGH%
   	 ODDDD 	 	I 	I 	I 	I 	I 	Ir3   c                    t          j        g dt          j                              }t          j        g dt          j                              }t          j        g dt          j                              }t           j                            |||gg d          }t          j        d ddddd d	dd
dd dg          }t          j        |	                                          }t          j        ||           d S )N)Nr5   r   rp  )r   Nr   )TFN)r<  r  r  r   Tr5   Fr   r   )rO   rl   r   r  r  r(  r   r9   rm   rS   r\   rn   )r   r<  r  r  rr   r_   r  s          r1   test_to_pandasz%TestConvertStructTypes.test_to_pandas
  s    x28::666x(((ry{{;;;,,,28::>>>n((4%%%' ' 9366u55d33
   3==??++
vx00000r3   c                    t          j                     t          j                    }t          j        dgt          j                              }t          j        dgt          j                              }t          j                            |gdg          }t          j                            |gdg          }t          j        ||g          }t          j
        ddiddig          }t          j
        |                                          }t          j        ||           ~~~~~~t          j                    }	|	|k    sJ d S )Nr   rp  r5   r<  )r  r  rO   r  rl   r   r(  r   r  r9   rm   rS   r\   rn   )
r   r  ints1ints2rq  r  rr   r_   r  r  s
             r1   test_to_pandas_multiple_chunksz5TestConvertStructTypes.test_to_pandas_multiple_chunks
  s$   

.00!28::...!28::...~))5'F8<<~))5'F8<<d|,,9QKQK
  
 3==??++
vx000,..	K''''''r3   c                 N   t          j        dt           j        fdt           j        fg          }t	          j        t	          j        dt	          j                              t	          j        dt	          j                              g          }t          j        g |          }t	          j        ||          }|                                g k    sJ t          j        ddg|          }t	          j        ||          }|                                dd	d
ddd
gk    sJ t	          j        |t          j        dd	g          |          }|                                dd	d
d gk    sJ t          j        g           }t	          j        g           }t          j        g |          }t	          j        ||          }|                                g k    sJ t          j        ddg|          }t	          j        ||          }|                                i i gk    sJ d S )Nr0   )y_titlerG  rG  r   rp  )r  T)+   Fr  T)r0   rG  r  Fr  r+   )	r;   r   r   r  rO   r  r   rl   r  r   r  r9  r   rr   s        r1   test_from_numpyz&TestConvertStructTypes.test_from_numpy
  s
   XRX("(35 6 6Ybhjj11bhjj113 4 4 x"%%%ht"%%%}}"$$$$x[1<<<ht"%%%}}$#7#7)+%#8#8#: : : : : ht"(E4="9"9CCC}}$#7#7">>>>> Xb\\Yr]]x"%%%ht"%%%}}"$$$$xR+++ht"%%%}}2r(******r3   c                    t          j        dt          j        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          j
        t          j        dt          j
        t          j        dt          j                              t          j        dt          j                              g                    t          j        dt          j                              t          j        dt          j                              g          }t          j        g |	          }t          j        ||
          }|                                g k    sJ t          j        ddg|	          }t          j        ||
          }|                                ddddddddddddgk    sJ d S )Nr0   xxyyrG  zl        r  r   r   rp  ))r   Tr5   r   ))r   Fr   rY  r   T)r  r  r5   r   )r0   rG  r  r   Fr   rY  )r;   r   r   r  r   object_itemsizesysmaxsizerO   r  r   r  rl   r  r  s        r1   test_from_numpy_nestedz-TestConvertStructTypes.test_from_numpy_nested
  s   XRXbg(,bh'7'9 : : ;RXRZ(* + + {S[5%8%8rra@@@@Ybi$		1J1J13$

1K1K1M 'N 'N O Obhjj11bikk224 5 5
 x"%%%ht"%%%}}"$$$$x!"$+-/ / / ht"%%%}}$''ae<<%((qu==#? ? ? ? ? ? ?r3   c                 t   d}t          j        dt           j        fdg          }d|j        z
  }d|z  }|||j        z   z  }t          j        ||          }t           j                            |          |d<   ||d<   t           j        |d         |d         dk     <   t          j	        t          j
        dt          j                              t          j
        dt          j                              g          }t          j        ||d	
          }|                    d	           |j        dk    sJ d dfd	}	 |	||           ~t           j                            |          dk     }
t          j        |||
d	          }|                    d	           |j        dk    sJ  |	|||
           ~d S )Nl        r0   )rG  rI   i      .r   rG  r  TrF  rg  r5   c              3   H   K   |                                  D ]
}|E d {V  d S r	  )
iterchunks)rr   r7  s     r1   iter_chunked_arrayzHTestConvertStructTypes.test_from_numpy_large.<locals>.iter_chunked_array  sD      )) ! !         ! !r3   c                    t          |           t          |          k    sJ |d         }|d         }t           	|                     D ]\  }}	 |                                }|||         r|J nI||         }t          j        |          r|d         J n|d         |k    sJ |d         ||         k    sJ s# t
          $ r t          d|            w xY wd S )Nr0   rG  zFailed at index)r   	enumerater  r;   r  	Exceptionprint)
rr   r   ru   xsysir  r  r0   r  s
            r1   checkz;TestConvertStructTypes.test_from_numpy_large.<locals>.check  s   s88s4yy((((cBcB#$6$6s$;$;<<  3		A'DG' yyyyqE8A;; /#$S6>>>>#$S6Q;;;; vA    +Q/// s   A,B??C)ri   ru   rR   r	  )r;   r   r!   r  rW  r=   random_samplerW   rO   r  r   rX  rl   rj  ra  )r   target_sizer  bsblockrX  r   r9  rr   r  ru   r  s              @r1   test_from_numpy_largez,TestConvertStructTypes.test_from_numpy_large   s    "XRZ(/:;;R[ r	B,-x$$$I++A..S	S	%'VS	$s)c/"Ybjll33bikk224 5 5ht"$777$~""""	! 	! 	!	 	 	 	 	 	( 	c4 y&&q))C/ht"4TBBB$~""""c4CCr3   c                    t          j        t          j        dt          j                              t          j        dt          j                              g          }t          j        dt
          j        fdt
          j        fg          }t          j        g |          }t          j	        t          d          5  t          j        ||           d d d            n# 1 swxY w Y   t          j        g           }t          j	        t          d          5  t          j        ||           d d d            d S # 1 swxY w Y   d S )	Nr0   rG  r  r   zMissing field 'y'r$  rp  zExpected struct array)rO   r  r   r   r  r;   r   rl   r   r9  r:  r  )r   r9  r  r   s       r1   test_from_numpy_bad_inputz0TestConvertStructTypes.test_from_numpy_bad_input9  s   Ybhjj11bhjj113 4 4XRXRX( ) ) x"%%%]:!46 6 6 	$ 	$HT####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ x||]9!8: : : 	$ 	$HT####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s$   >C!!C%(C%D??EEc                    t          j        dddgi          }t          j        dddddddgi          }t          j        d	t          j                    fd
t          j                    fg          }t          j        |d                   }t          ||d         |           t          j        d|fg          }t          ||||           d S )Ntuples)r   r5   r   r   r   r5   r4  r   r   r   r   r  )r_   rD   r`   )
r9   r:   rO   r  r   r;   asarrayr~   rD   rf   )r   r^   rr  struct_typerr   r`   s         r1   test_from_tuplesz'TestConvertStructTypes.test_from_tuplesH  s    \8ff%5677laa((*:*:;<> > i#rxzz!2S"(**4E FGGjH&&+h/k	C 	C 	C 	C )h%<$=>>_+	- 	- 	- 	- 	- 	-r3   c                 0   ddgt          j        g d                                          t          j        g d                                          g}t           j                            |          }t          d |D              }fd|D             }t          j        |          }t          j	        |
                                |           |                    g d          }d |d	<   t          j	        |
                                |           d S )
Nr<  r  )  i  r  )r   r   Nr   c              3   >   K   | ]}|                                 V  d S r	  )r  )r/   rT  s     r1   	<genexpr>zCTestConvertStructTypes.test_struct_of_dictionary.<locals>.<genexpr>`  s,      GGUu00GGGGGGr3   c                 J    g | ]}t          t          |                     S r+   )r  r  )r/   rp  r   s     r1   r2   zDTestConvertStructTypes.test_struct_of_dictionary.<locals>.<listcomp>a  s)    III3c%oo..IIIr3   )r   Nr5   r   )rO   rl   r  r(  r   r  r9   rm   r\   rn   rS   rS  )r   childrenrr   rows_as_tuplesrows_as_dictsr_   r   s         @r1   test_struct_of_dictionaryz0TestConvertStructTypes.test_struct_of_dictionaryY  s    H___--??AAH11122DDFFHn(((?? GGhGGGHIIII.III9]++
s}}999 hh|||$$
s}}99999r3   N)r  r  r  r  r  r  r  r  r  r   r  slowr  r  r  r  r  r+   r3   r1   r  r  
  s         I I I1 1 1"( ( (6+ + +>? ? ?4 [[5 5  5n$ $ $- - -": : : : :r3   r  c                   Z    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestZeroCopyConversionz@
    Tests that zero-copy conversion works with some types.
    c                     t          j        g d                              d          }t          j        |g d           d S )Nr   Tr  r   )r   rd   s     r1   test_zero_copy_successz-TestZeroCopyConversion.test_zero_copy_successq  sC    )))$$..d.CCvyyy11111r3   c                 f   t           j                            t          j        ddg          t          j        dgd                    }|                    d          }t          j        ddg          }t          j	        t          j
        |          t          j
        |          d           d S )	Nr   r   r   r   Tr  Frv   )rO   r@  r   r;   rl   rS   r9   r  r\   rn   rm   )r   rr   rd   r|   s       r1   test_zero_copy_dictionariesz2TestZeroCopyConversion.test_zero_copy_dictionariesu  s     ,,HaVHaS(((
 

 d33A''
ry00")F2C2C+0	2 	2 	2 	2 	2 	2r3   c                     t          j        dgd          }t          j        |                              d          }t	          j        ||           d S )Nr$  r'   r   Tr  r;   rl   rO   rS   r   r   r   rr   rd   s      r1   test_zero_copy_timestampz/TestZeroCopyConversion.test_zero_copy_timestamp  sP    h~-=>>>#(((==vs+++++r3   c                     t          j        dgd          }t          j        |                              d          }t	          j        ||           d S )Nr   r)   r   Tr  r  r  s      r1   test_zero_copy_durationz.TestZeroCopyConversion.test_zero_copy_duration  sP    hs"3444#(((==vs+++++r3   c                     t          j        t          j                  5  |                    d           d d d            d S # 1 swxY w Y   d S )NTr  )r   r9  rO   rq  rS   r   rr   s     r1   check_zero_copy_failurez.TestZeroCopyConversion.check_zero_copy_failure  s    ]2?++ 	/ 	/MMM...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA
Ac                 X    |                      t          j        g d                     d S )N)r  BCr  rO   rl   r  s    r1   &test_zero_copy_failure_on_object_typesz=TestZeroCopyConversion.test_zero_copy_failure_on_object_types  s*    $$RXooo%>%>?????r3   c                 X    |                      t          j        g d                     d S )N)r   r   Nr  r  s    r1   *test_zero_copy_failure_with_int_when_nullszATestZeroCopyConversion.test_zero_copy_failure_with_int_when_nulls  s*    $$RXlll%;%;<<<<<r3   c                 X    |                      t          j        g d                     d S )N)r  r   Nr  r  s    r1   ,test_zero_copy_failure_with_float_when_nullszCTestZeroCopyConversion.test_zero_copy_failure_with_float_when_nulls  s-    $$RX.>.>.>%?%?@@@@@r3   c                 X    |                      t          j        ddg                     d S )NTFr  r  s    r1   $test_zero_copy_failure_on_bool_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_bool_types  s*    $$RXtUm%<%<=====r3   c                     t          j        ddgddggt          j        t          j                                        }|                     |           d S )Nr   r5   r   r  rp  )rO   rl   rr  r   r  r  s     r1   $test_zero_copy_failure_on_list_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_list_types  sM    hAA'bhrxzz.B.BCCC$$S)))))r3   c                     t          j        dd gd          }|                     t          j        |                     d S )Nr   r'   r   r;   rl   r  rO   r  s     r1   .test_zero_copy_failure_on_timestamp_with_nullszETestZeroCopyConversion.test_zero_copy_failure_on_timestamp_with_nulls  s=    h4y(8999$$RXc]]33333r3   c                     t          j        dd gd          }|                     t          j        |                     d S )Nr   r)   r   r  r  s     r1   -test_zero_copy_failure_on_duration_with_nullszDTestZeroCopyConversion.test_zero_copy_failure_on_duration_with_nulls  s=    h4y(9:::$$RXc]]33333r3   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+   r3   r1   r  r  l  s         2 2 2
2 
2 
2, , ,
, , ,
/ / /@ @ @= = =A A A> > >* * *4 4 44 4 4 4 4r3   r  c                  h    t                      } t          | d           t          | dd           d S )NFrG   TrH   ra   rB   rf   r^   s    r1   _non_threaded_conversionr    s;    			BBE2222BEDAAAAAAr3   c                  h    t                      } t          | d           t          | dd           d S )NTrG   r  r   r  s    r1   _threaded_conversionr    s;    			BBD1111BD4@@@@@@r3   c                      e Zd ZdZd ej                    fd ej                    fd ej                    fd ej                    fd ej	                    fd ej
                    fd ej                    fd	 ej                    fd
 ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej        d          fd ej         ej                              fgZd Zd Zd Zd Zej        j        ej        j        d                         Zd Zd Zd Z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             Z$d Z%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d& Z,d' Z-d(S ))TestConvertMiscz)
    Miscellaneous conversion tests.
    r   r   r   r   r   r   r   r   r  r    r!   rI   r  c                 T    t          j        dg di          }t          |           d S )Nr   NNNr   r   s     r1   test_all_none_objectsz%TestConvertMisc.test_all_none_objects  s1    \3 2 2 2344#####r3   c                     t          j        dg di          }|d                             d          |d<   t          |           d S )Nr   r  r  )r9   r:   r5  rf   r   s     r1   test_all_none_categoryz&TestConvertMisc.test_all_none_category  sJ    \3 2 2 2344S'..,,3#####r3   c                     | j         D ]>\  }}t          j        g t          j        |                    }t	          ||           ?d S )Nr   rp  )
type_pairsr;   rl   r   r~   )r   	dtype_strpa_typerr   s       r1   test_empty_arraysz!TestConvertMisc.test_empty_arrays  sV    "&/ 	6 	6Iw(2RXi%8%8999C"3W55555	6 	6r3   c                 "    t                       d S r	  )r  r  s    r1   test_non_threaded_conversionz,TestConvertMisc.test_non_threaded_conversion  s     """""r3   c                    t          j        d          }	 |                    t                     |                                 |                                 d S # |                                 |                                 w xY w)Nr5   )mpPoolapplyr  closejoin)r   pools     r1   %test_threaded_conversion_multiprocessz5TestConvertMisc.test_threaded_conversion_multiprocess  si     wqzz	JJ+,,,JJLLLIIKKKKK JJLLLIIKKKKs   A *Bc                    d}dd ddt           j        g}g d}dd ddt           j        g}t          j        ||z            t          j        ||z  ddg	          t          j        ||z            t          j        ||z            t          j        ||z  g d
d          ||z  ||z  ||z  ||z  ||z  d
}t          j        |          }t          |           |D ]}t          ||                    d S )Nr   r   rY  rS  )r   r   r   r   r   rT  rm  rV  r  )rY  rS  r   Tr  r  )
cat_stringscat_strings_with_nacat_ints
cat_binarycat_strings_orderedr<  r  rN  strings2strings3)r;   rW   r9   r  r:   rf   r~   )r   rP  rb  rc  v3r  r^   rn  s           r1   test_categoryzTestConvertMisc.test_category  s2   T5%0__dFFBF3 >"w,77#%>"w,>CU^$M $M $MrG|44.g66#%>W)>)>)>$ $ $ L'\G|WW& & \&!!### 	. 	.A"6!9----	. 	.r3   c                     d }t          j        g dddg          t          j        g dddgd          g}|D ]} ||           d S )Nc                     t          j        |           }|                                }t          j        t          j        |          t          j        |                      d S r	  )rO   rl   rS   r\   rn   r9   rm   )r  rr   rd   s      r1   _checkzBTestConvertMisc.test_category_implicit_from_pandas.<locals>._check  sG    (1++C]]__F"29V#4#4billCCCCCr3   r  r   r   r  Tr  )r9   r  )r   r(  r  rr   s       r1   "test_category_implicit_from_pandasz2TestConvertMisc.test_category_implicit_from_pandas  s    	D 	D 	D N???SzBBBN???Sz#') ) )

  	 	CF3KKKK	 	r3   c                 t    t          j        dt          j        g           i          }t          |           d S )Ncat)r9   r:   r  rf   r   s     r1   test_empty_categoryz#TestConvertMisc.test_empty_category  s4    \5"."4"4566#####r3   c                 t   t          j                    dft          j                    dffD ]\  }}t          j        g t          j        t          j                    |                    }|                                }t          j        g t          j
        g |                    }t          j        t          j        |          t          j        |                     t          j        d|i          }|                                }t          j        d|i          }t          j        ||           d S )NrI   r   r   r  r   )rO   r  r   r  
dictionaryr   rS   r9   r  r;   rl   r\   rn   rm   rc   r:   r]   )r   r  r   r   rd   r_   rc   s          r1   test_category_zero_chunksz)TestConvertMisc.test_category_zero_chunks  s     "	X6W8MN 		4 		4NGU R]2799g%F%FGGA[[]]F~bRXb5N5N5NOOOH"29V#4#4bi6I6IJJJHc1X&&E__&&F|S(O44H!&(3333		4 		4r3   zdata,error_typer   )r   r   r   r   Tr   c                     t          j        |          }d}t          j        ||          5  t          j                            |           d d d            d S # 1 swxY w Y   d S )N/Conversion failed for column a with type objectr$  )r9   r:   r   r9  rO   rQ   rR   )r   r   
error_typer^   r  s        r1   test_mixed_types_failsz&TestConvertMisc.test_mixed_types_fails$  s     \$?]:S111 	% 	%H  $$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s    AA!Ac           	         g }g d}d\  }}t           j                            ||                                          dz  }g d}|D ]i}t	          j                    5  t	          j        d           |                    |                    |                     d d d            n# 1 swxY w Y   j|                    t          j	        d t          ||z            D             t                                        ||                                                     t          j	        g d|z  t                                        ||                                          }d |d	<   |                    |           |                    t          j        d
||z  d                              ||                                                     |dk                        t                    d d df         }	|D ]O}
t          j        |
|          }|d         }t#          |           t%          |           t%          ||	           Pd S )Nr  )r   r   r   )
r  r  r  r  r  r  r  r  r  r  rJ   c                 ,    g | ]}t          d           S r  r   r/   r  s     r1   r2   z<TestConvertMisc.test_strided_data_import.<locals>.<listcomp>F  s     FFFA|B//FFFr3   r   r(  r   r#   r%   r   r   r   r  )r;   r=   r>   r{   rX   rY   r   r  r5  rl   r?   rI   reshaper<   r"   r9   r:   rf   r~   )r   casesrU   NKrandom_numbersnumeric_dtypes	type_nameboolean_objectsstrided_maskcaser^   re   s                r1   test_strided_data_importz(TestConvertMisc.test_strided_data_import5  s   !//1A..3355;& & & ( 	? 	?I(** ? ?%h///^229==>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
 	RXFFq1uFFF$*, , ,gammDDFF	, 	, 	,
 8$7$7$7!$;6JJJ#GAqMM$$&& 	 "_%%%RY8!a%%57 7 7gammDDFF	, 	, 	, '*22488A> 	; 	;DdG444BS'C#B'''"3'''"3\:::::	; 	;s   =B%%B)	,B)	c                 "   d } |t          j        d gdz  t                                |t          j        t          j        gdz  t                                |t          j        d t          j        d gt                               d S )Nc                     t          j        |           }t          |t           j                  sJ t	          |          dk    sJ |j        dk    sJ |D ]}|t           j        u sJ d S )Nr   )rO   rl   r   	NullArrayr   ry   r  )ro   r  items      r1   _check_seriesz5TestConvertMisc.test_all_nones.<locals>._check_seriesa  s|    Ii66666y>>Q&&&&'1,,,,! % %ru}}}}}% %r3   r   r   )r9   rm   rI   r;   rW   )r   rH  s     r1   test_all_noneszTestConvertMisc.test_all_nones`  s    	% 	% 	% 	bi
&999:::bi1F;;;<<<birvt 4FCCCDDDDDr3   c                    t          dg dfdt          j        g dt          j                  fdg dfg          }t	          j        |          }t          j        t          j        dt          j	                              t          j        dt          j	                              g          }t          |||ddg         |           d S )Nr   )r   r   r5   r   r   r   )ir   r   r  r   r   )rD   r_   r`   )r   r;   rl   r   r9   r:   rO   rD   r   r   rf   )r   r   r^   partial_schemas       r1   test_partial_schemaz#TestConvertMisc.test_partial_schemam  s    ///""(...bh???@%%%&
  
 \$HS"(**%%HS"(**%%$
  
 	 >)+S#J0>	@ 	@ 	@ 	@ 	@ 	@r3   c                    t          j        i           }t          |d            t          |d d           t          j        t          j        g                     }t          ||d           t          ||dd           t          j        i g d          }t          |d           t          |dd           d S )	Nr   T)rE   ra   r   Fr   r   )ra   rE   )r9   r:   rf   r   )r   r^   r_   r   s       r1    test_table_batch_empty_dataframez0TestConvertMisc.test_table_batch_empty_dataframe~  s    \"488884$GGGG<555HUCCCCHUTRRRRl2YYY///D9999d4HHHHHHr3   c           
         t          j        g t          j                              }t          j        t          j        g t                              }t          j        |	                                t          j        t          j        g t
          j                                       t          j        g t          j
                              }t          j        |	                                |           t          j        g t          j        t          j                                        }t          j        |	                                |           t          j        g t          j        t          j        dt          j                              g                    }t          j        |	                                |           d S )Nrp  r   r   )rO   rl   r   r9   rm   r;   rI   r\   rn   rS   r  rr  r  r   )r   rr   empty_objectss      r1   test_convert_empty_tablez(TestConvertMisc.test_convert_empty_table  sB   hr

+++	"(2V"<"<"<==
s}}!y"BH)E)E)EFF	H 	H 	Hhr	,,,
s}}>>>hr 4 4555
s}}>>>hr	28C+D+D*E F FGGG
s}}>>>>>r3   c                    t          j        dt           j        fdt           j        fg          }t          j        ddg|          }|j        dk    sJ t          j        |d         t          j                              }|                                dd	gk    sJ t          j        |d         t          j                              }|                                d
dgk    sJ dS )zt
        ARROW-2172: converting from a Numpy array with a stride that's
        not a multiple of itemsize.
        r0   rG  )r  r=  )r5   r   )r   rp  r  rT  r=  r5   N)r;   r   r   r   rl   r  rO   r  )r   r   r   rr   s       r1   test_non_natural_stridez'TestConvertMisc.test_non_natural_stride  s    
 3/C?;<<x8,E:::|t####htCyrxzz222}}2s)++++htCyrxzz222}}2q'))))))r3   c                 $   t          j        ddt           j                  ddd         }t          j        |t          j                              }t          j        g dt          j                              }|                    |           d S )	Nr   r  r   r   r=  r5   rp  )r   r   r   g      @)r;   r<   r    rO   rl   r!   rT   )r   r	  pa_arrr_   s       r1   #test_array_from_strided_numpy_arrayz3TestConvertMisc.test_array_from_strided_numpy_array  sx    1b
333AbF;&rz||4448000rz||DDDhr3   c                 |   t          j        t          d          t          j        ddd          d          }t          j        t          j        dt          j                              t          j        dt          j	                              g          }t          j        t                    5  t
          j                            ||           d d d            n# 1 swxY w Y   t
          j                            ||d	
          }|                    d          j        t          j	                    k    sJ d S )Nabcr   r   r   )r  r  r  r  rq  Fr  )r9   r:   r   r;   linspacerO   rD   r   r  r   r   r9  r:  rQ   rR   r  ri   r  s       r1   test_safe_unsafe_castsz&TestConvertMisc.test_safe_unsafe_casts  sE   \eQ1%%
 
  
 HS")++&&HS"(**%%
  
 ]:&& 	4 	4H  F 333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 $$RU$CC||C  %333333s   0"CC"%C"c           	         	 t          j        dt           j                            dt          j        dg          i          }nE# t          $ r8 t          j        dt          j        dt          j        dg          i          }Y nw xY wt          j        t          d          5  t          j                            |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   zSparse pandas datar$  )r9   r:   r  SparseArrayr;   rW   AttributeErrorr   r9  r  rO   rQ   rR   r   s     r1   test_error_sparsez!TestConvertMisc.test_error_sparse  s   	EsBI$9$91bfa.$I$IJKKBB 	E 	E 	EsBNArvq>$B$BCDDBBB	E ]9,@AAA 	% 	%H  $$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s$   A A ?BB# CCCN).r  r  r  r  rO   r   r   r   r   r   r   r   r   r  r    r!   r  rX  rr  r  r	  r  r  r  r   r  	processes	threadingr  r%  r)  r,  r/  r  r&  rq  r3  rC  rI  rM  rO  rR  rU  rX  r\  r`  r+   r3   r1   r  r    s        
 
	("(**	("(**	("(**	("(**	929;;	929;;	929;;	JBJLL!	JBJLL!	JBJLL! 
929;;	929;;	929R==!	828HBHJJ''(#J($ $ $$ $ $
6 6 6
# # # [[   . . .4  $ $ $
4 4 4 [===!2#45===!2#45At9r01D#;1As8_bo.C:0	

 
% %
 
%); ); );VE E E@ @ @"I I I
? 
? 
?* * *     4 4 4$% % % % %r3   r  c                     t          j        g d          } t          j                            | t          j                    d          }t          j        g dt          j                              }|                    |          sJ d S )N)r   r5   Nr   Tri   r?  rp  )r9   rm   rO   r  rR   r   rl   rT   )r|   rr   r_   s      r1   *test_safe_cast_from_float_with_nans_to_intre    su     Y''F
(

vBHJJT

B
BCxbhjj999H::hr3   c                  r   t           j                            t          j        dd                              d          t          j        t          j        ddgt                    d          g          } t          j        dd          }||	                    d	          |	                    d
          |d d d         	                    d	                              d          
                    d          ddgdz  t          j        ddgdz            
                    d          j        ddgdz  t
          j                            d          t
          j                            ddd          t          j        ddd          t          j        ddd          d}t          j        ||           S )Nr  r   r  r5   r   rY  r   r  r{  ri  r  TFr   r   r@   2013Mr   r   r   )r.  r   r   )r   r   r5   r   r   r   r   r   r   r  r  r   )r9   r   r   r   repeatr;   tilerl   rI   r  r5  rm   r|   r=   r>   r  period_rangeinterval_ranger:   )r   r  r   s      r1   _fully_loaded_dataframe_examplern    s   M%%
lA...55a88
%v666::'  E
 
|R	0	0	0B>>%  >>,''ccc7u%%,,Q//66zBB5>A9eU^a'((//
;;B%=19??29Q"--?62C888AAr::: D <E****r3   rU   rT  r   c                 "   t          d          t          t          j                  cxk    rt          d          k     rn nt          j        d           t          j        |           }t          j                            |          }t          j                            |	                                          }|
                    |          sJ |j        
                    |j                  sJ |j        j        |j        j        k    sJ d S )NrO  rP  rQ  r   )r   r9   rR  r   rS  r:   rO   rQ   rR   rS   rT   rD   r  )rU   r^   table1table2s       r1   !test_roundtrip_with_bytes_unicoderr    s    w72>22EEEEWW5E5EEEEEE 	0111	g	&	&	&BX!!"%%FX!!&"2"2"4"455F==     =.....=!V]%;;;;;;;r3   c                 b    | dz  }| dz  } | dz  }| dz  } | dz  }| dz  }t          ||||          S )Nr  r  )r   )valr=  secondsminutesr  s        r1   _pytime_from_microsrw    sL    =LGOCBhGBJCBhG2IEw666r3   c                 R    | j         dz  | j        dz  z   | j        dz  z   | j        z   S )Nl    $'- i r  )hourminuter  r  )pytimes    r1   r  r    s<    K*$MH$%MG#$   r3   c                      G d d          } t          j        d |              |             gi          }d}t          j        t          |          5  t
          j                            |           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )6test_convert_unsupported_type_error_message.<locals>.ANr  r+   r3   r1   r  r~    s        r3   r  r   r1  r$  )r9   r:   r   r9  r:  rO   rQ   rR   )r  r^   r  s      r1   +test_convert_unsupported_type_error_messager  	  s            
sQQSS!!##J'	(	(B
;C	z	-	-	- ! !
R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s    B  BBc                     |                                  }t          j        || j        d          }|                    |           sJ d S )NTrF  )rS   rO   rl   ri   rT   )rr   ro   r   s      r1   test_array_to_pandas_roundtripr    sE    Axd;;;H??3r3   c                 >    d t          |           D             }||z  S )Nc                 ,    g | ]}t          d           S r6  )r   r8  s     r1   r2   z+_generate_dedup_example.<locals>.<listcomp>'  s    7771U2YY777r3   )r?   )nuniquerP  unique_valuess      r1   _generate_dedup_exampler  &  s&    77g777M7""r3   c                 D    t          d | D                       |k    sJ d S )Nc                 ,    h | ]}t          |          S r+   r  r.   s     r1   	<setcomp>z"_assert_nunique.<locals>.<setcomp>,  s    ###!1###r3   )r   )r  r_   s     r1   _assert_nuniquer  +  s0    ##s###$$000000r3   c                     t          j                    rt          j        d           d} d}t	          | |          }t          j        |t          j                              t          j        |t          j                              t          j	        ||g          fD ]U}t          |                                |            t          |                    d          t          |                     Vd S )NDpandas uses string dtype and not object dtype, keyword has no effectr   r  rp  Fdeduplicate_objects)r   r	  r   rS  r  rO   rl   rX  r4  r  r  rS   r   )r  rP  r|   rr   s       r1   .test_to_pandas_deduplicate_strings_array_typesr  /  s    $&& 
R	
 	
 	
 GG$Wg66Fbikk222bgii000 &&!1224 L L 	111%@@#c((KKKK	L Lr3   c                     t          j                    rt          j        d           d} d}t	          | |          }t          j        |          }t
          j                            |gdg          }t
          j	        
                    |g          }||fD ]a}t          |                                d         |            t          |                    d          d         t          |                     bd S )Nr  r   r  r   Fr  )r   r	  r   rS  r  rO   rl   rP   r   rQ   rA  r  rS   r   )r  rP  r|   rr   r  r  r  s          r1   .test_to_pandas_deduplicate_strings_table_typesr  ?  s    $&& 
R	
 	
 	
 GG$Wg66F
(6

C		#	#SEE7	3	3B
(


%
%CCy " ".888%@@GC	" 	" 	" 	"" "r3   c                  N   d} d}t          t          j                            dd|                     }d || dz  <   t	          j        ||z            }t          |                    d          |            t          |                    dd	
          | dz
  |z  dz              d S )Nr   r  i i ʚ;r@   r5   TrL  F)rM  r  r   )r   r;   r=   r  rO   rl   r  rS   )r  rP  r  rr   s       r1   .test_to_pandas_deduplicate_integers_as_objectsr  R  s    GG **8Zg*NNOOM"&M'Q,
(=7*
+
+CCMMtM<<gFFFCMMt6; " = = q[G+a/1 1 1 1 1r3   c                  j   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 ]y\  }}}t          j        ||z  |          }|                    |          }t           |j        di ||            t           |j        dddi|t          |                     zd S )Nr   r  r   r  r  Tr   r  r  r  rp  r  Fr+   )r   r?   rO   rl   rk  r  rS   r   )	r  rP  r  r:  raw_type
array_typepandas_optionsraw_arr
casted_arrs	            r1   $test_to_pandas_deduplicate_date_timer  c  s   GGw((M 
(-t45	(-t45	,#	,#E 16 ) ),*n(=72BBB\\*--
,
,>>~>>	! 	! 	!,
, ? ? ?/=? ?J	) 	) 	) 	)) )r3   c                     t          j        g dt          j        ddgd          } t	          j        t	          j        dt	          j                    d          t	          j        dt	          j                    d          g          }t          j
        t                    5  t          j                            | |	           d d d            d S # 1 swxY w Y   d S )
N)333333?g @r  r  r   r4  r   Fr  r   rq  )r9   r:   r;   rW   rO   rD   r   r!   r4  r   r9  r:  rQ   rR   )r^   rD   s     r1   /test_table_from_pandas_checks_field_nullabilityr  ~  s   	OOOVXu57 7 
8 
8BYbjllUCCCbgii%@@@B C CF 
z	"	" 0 0
R///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   ""CCCc            
         t          j        t          dg dfdg dddgd d gfdg dfg                    } | g d	         }t          j        dt          j                    fdt          j        t          j                              fdt          j                    fg          }t          j        dt          j                    fdt          j                    fdt          j        t          j                              fg          }t          j        	                    | d
          }t          j        	                    |d
          }|j        
                    |          sJ |j        
                    |          sJ d S )N	partitionr   r   r   r   r  r   r   r   r/  NNr   gffffff
@r/  r  r  Fr   )r9   r:   r   rO   rD   r   rr  r!   rQ   rR   rT   )df1r   schema1schema2rp  rq  s         r1   6test_table_from_pandas_keeps_column_order_of_dataframer    su   
,{	lll#	III1vtT23	)))*$    C
 ///
0Ci	bhjj!	28BHJJ''(	2:<<   G
 i	2:<< 	bhjj!	28BHJJ''(  G X!!#e!<<FX!!#e!<<F=(((((=(((((((r3   c            
         t          j        t          dg dfdg dddgd d gfdg dfg                    } t          j        dt          j                    fdt          j        t          j                              fdt          j                    fg          }| | j        d	k             }| | j        d
k             g d         }t          j	        
                    ||d          }t          j	        
                    ||d          }|j                            |          sJ |j                            |j                  sJ d S )Nr  r  r  r   r   r   r/  r  r   r   r  Fr6  )r9   r:   r   rO   rD   r!   rr  r   r  rQ   rR   rT   )r^   rD   r  r   rp  rq  s         r1   3test_table_from_pandas_keeps_column_order_of_schemar    sL   	k	lll#	III1vtT23	)))*#   
 
B Y	2:<< 	28BHJJ''(	bhjj!  F R\Q
C
R\Q
 A A A
BCX!!#fU!KKFX!!#fU!KKF='''''=.......r3   c            
         t          j        t          dg dfdg dddgd d gfdg dfg                    } g d	}t          j        dt          j        t          j                              fdt          j                    fdt          j                    fg          }ddg}t          j        dt          j                    fdt          j                    fg          }t          j        	                    | |d
          }t          j        	                    | |d
          }|j        
                    |          sJ |j        
                    |          sJ d S )Nr  r  r  r   r   r   r/  r  )r  r/  r  F)rU   rE   )r9   r:   r   rO   rD   rr  r   r!   rQ   rR   rT   )r^   columns1r  columns2r  rp  rq  s          r1   ;test_table_from_pandas_columns_argument_only_does_filteringr    se   	k	lll#	III1vtT23	)))*#   
 
B 100Hi	28BHJJ''(	2:<< 	bhjj!  G +&Hi	2:<< 	bhjj!  G
 X!!"hu!MMFX!!"hu!MMF=(((((=(((((((r3   c            
         t          j        t          dg dfdg dddgd d gfdg dfg                    } t          j        dt          j                    fdt          j        t          j                              fdt          j                    fg          }ddg}t          j	        t                    5  t          j                            | ||	           d d d            d S # 1 swxY w Y   d S )
Nr  r  r  r   r   r   r/  r  )rD   rU   )r9   r:   r   rO   rD   r   rr  r!   r   r9  r:  rQ   rR   )r^   rD   rU   s      r1   @test_table_from_pandas_columns_and_schema_are_mutually_exclusiver    sU   	k	lll#	III1vtT23	)))*#   
 
B
 Y	bhjj!	28BHJJ''(	2:<<   F
 "G	z	"	" A A
R@@@A A A A A A A A A A A A A A A A A As   6#C&&C*-C*c                     t          j        dg di          } t          j        t          j        dt          j                    d          g          }t          j                            |           }|j                            d          j        du sJ t          j                            | |          }|j                            d          j        du sJ d S )Nr   r   Fr  Trq  )	r9   r:   rO   rD   r   r   rQ   rR   r  r^   rD   rc   s      r1   /test_table_from_pandas_keeps_schema_nullabilityr    s    	sLLL)	*	*BY
bhjj5111  F H  $$E<c""+t3333H  F 33E<c""+u444444r3   c                  R   t          j        g dg dd          } t          j        dt          j                    fdt          j                    fdt          j                    fg          }t          j        t          d          5  t          j	        
                    | |	           d d d            n# 1 swxY w Y   d| j        _        t          | |d
|           t          j        t          d          5  t          j	        
                    | |d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j	        
                    | |d            d d d            n# 1 swxY w Y   t          j        g dd          | _        t          | |d |           t          | |d
|           t          j        dt          j                    fdt          j                    fdt          j                    fg          }t          | |d |           t          | |d
|           t          j        dt          j                    fdt          j                    fg          }|                                 }|                    d
          }t          | |d ||           t          | |d
||           t           j                            g dddg          | _        t          j        dt          j                    fdt          j                    fdt          j                    fdt          j                    fg          }t          | |d
|           t          | |d |           t          j        dt          j                    fdt          j                    fdt          j                    fg          }|                                 }|                    dd
          }t          | |d
||           t          | |d ||           d S )Nr   r  r4  r   r   r   zname 'index' present in ther$  rq  T)rD   rE   r`   z'preserve_index=False' wasFr6  z=name 'index' is present in the schema, but it is a RangeIndexr   rj   r  )rD   rE   r`   r_   ))r   r   )r   r5   )r   r   level1level2r   )r9   r:   rO   rD   r   r!   r   r9  KeyErrorrQ   rR   r   rk   rf   r:  r   r{   r  r   from_tuplesr  )r^   rD   r_   s      r1   +test_table_from_pandas_schema_index_columnsr    sc   	IIIOOO<<	=	=BY	bhjj	bjll	"(**  F 
x'D	E	E	E 0 0
R///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 BHM Bvd,24 4 4 4 
z)E	F	F	F F F
RuEEEF F F F F F F F F F F F F F F
 
z *J 
K 
K 
K E E
RtDDDE E E E E E E E E E E E E E E x			000BH Bvd,24 4 4 4Bvd,24 4 4 4 Y	"(**	bhjj	bjll  F
 Bvd,24 4 4 4Bvd,24 4 4 4
 Y	bhjj	bjll  F wwyyH###..HBvd,2XG G G GBvd,2XG G G G }(()G)G)G08(/C ) E EBHY	29;;	28::	bhjj	bjll	  F Bvd,24 4 4 4Bvd,24 4 4 4 Y	28::	bhjj	bjll  F
 wwyyH##H4#88HBvd,2XG G G GBvd,2XG G G G G Gs6   "B55B9<B9:#D))D-0D-#E>>FFc                     t          j        g dg dd          } t          j        dt          j                    fdt          j                    fdt          j                    fg          }t          j                            | d          }t          j                            | d|	          }|j        	                                
                    |          sJ t          j        g dg ddg d
          } t          j                            |           }t          j                            | |          }|j        	                                
                    |          sJ d S )Nr   r  r4  r   r   r  Tr   )rE   rD   r   r   rq  )r9   r:   rO   rD   r   r!   SchemarR   rQ   rl  rT   )r^   r`   rD   rc   s       r1   :test_table_from_pandas_schema_index_columns__unnamed_indexr  O  sH   	IIIOOO<<	=	=Bi	bhjj	bjll	bhjj)!  O Y""2d";;FH  D HHE<''))00AAAAA 
IIIOOO<<III	N	N	NBY""2&&FH  F 33E<''))00AAAAAAAr3   c                      t          j                    } t          j                            |                               ddi          }t          j                            | |          }|j        j        	                    d          dk    sJ d S )NmetaTruerq  s   metas   True)
r9   r:   rO   r  rR   r  rQ   rD   r  getr  s      r1   2test_table_from_pandas_schema_with_custom_metadatar  d  sy    	BY""2&&44ff5EFFFH  F 33E< $$W--888888r3   c            
         t          j        t          j        ddd          t          j                            d          d          } t          j        t          j        dt          j	                    d          t          j        d	t          j
        d
d          d          g          }t          j                            | |          }|j                            |          sJ |j        j        d         d         }|d         dk    sJ |d         J |j        j        d         d         }|d         d	k    sJ |d         ddik    sJ |                                }ddi}t!          t           j                  t!          d          k    rd|d	<   | dd	g                             |          }t'          j        ||           d S )Nz2020-01-01T00:00:00ZrB  r5   )r   r   )r   r  r  Tr  r   ro   r  r  Frq  rU   r   rk   r  r   r   r    rO  zdatetime64[s, UTC])r9   r:   r   r;   r=   r>   rO   rD   r   r    r  rQ   rR   rT   r
  rS   r   rR  r5  r\   r]   )r^   rD   rc   metadata_floatmetadata_datetimerd   coerce_cols_to_typesr_   s           r1   2test_table_from_pandas_schema_field_order_metadatar  l  s    
M"8sANNN##  
 
B
 Y
"*,,666
R\#%8885III  F
 H  F 33E<v&&&&&\1)<Q?N&!W,,,,*%---4Y?BV$
2222Z(Z,?????__F#Y/r~''"2"222+?Z(7J'(//0DEEH&(+++++r3   c                  d   t          j        t          j        g dd          t          j        g dd          t          j                            d          g dg dd          } t          j                            |           }|	                                }t          j        | |           d S )	Nr   r5   r   r   r   r   r   r   r   )r   rY  Nrh  rS  )FTFTF)r  r  c3c4c5)r9   r:   r;   rl   r=   r>   rO   rP   rR   rS   r\   r]   )r   rE  rd   s      r1   test_recordbatch_from_to_pandasr    s    <hg666hh777iooa  000///   D N&&t,,E__F$'''''r3   c                     t          j        t          j        g dd          t          j        g dd          g dg dd          } t          j        t          j        d	d
gd          t          j        ddgd          ddgddgd          }t          j                            |           }t          j                            |          }t          j                            ||g          }|	                                }t          j
        | |g                              d          }t          j        ||           d S )N)r   r   r5   r   r   r   r!   )TNF)r   rY  N)r  r  r  r  r   r   r   r   Trh  rS  r  )r9   r:   r;   rl   rO   rP   rR   rQ   rA  rS   r  r  r\   r]   )r  r  batch1batch2rc   rd   r   s          r1   test_recordbatchlist_to_pandasr    sD   Lhyyy111hi888!!!"""	   E Lh1vX...hSz333Tlen	   E ^''..F^''..FH!!66"233E__F9eU^$$00d0;;D$'''''r3   c                  J   t          j        t          j        g d          gdg          } t          j        t          j        g d          gdg          }| d                                         j        dk    sJ |d                                         j        dk    sJ d S )Nr   a0r   r   )rO   record_batchrl   rc   rS   rk   )r  r  s     r1   *test_recordbatch_table_pass_name_to_pandasr    s    	"(<<<001$	@	@	@B
"(<<<(()$888Aa5??!T))))Q4>> D((((((r3   ri   r_   rE  r"   r   r   r   r   r   r   r   r   r  r    r!   r   rb  r   )lengthr&  zlist[list[int16]]r  r   r   rb  r   rc  r  r/  ro   r   c                 0    t          |           |k    sJ d S r	  )r
   r  s     r1   test_logical_typer    s#    < D!!X------r3   c                     d} t          j        t          j        | t          j                  t          j                            dd|                               t          j                            }t          j
                     t          j                    }|                                }t          j                    || dz  z   k    sJ d }t          j
                     t          j                    |k    sJ t          j        t          j        | t          j                            }t          j                    }|                                }t          j                    |k    sJ d S )N'  r   r   r5   r@   r  r   )rO   rl   r;   r<   r   r=   r  r5  r  r  r  r  rS   )r;  rr   prior_allocationr0   s       r1   test_array_uses_memory_poolr    s4   A
(29Qbh///	))!QQ)77>>rxHHJ J JC JLLL/11A#%%*:QU*BCCCCAJLLL#%%)99999 (29Qbh///
0
0C/11A#%%)9999999r3   c                  h   t          j        t          j        t          j        dt          j                            gdg          } t          | d           t          j                    }|                                 }|d         j	        j
        j        sJ t          j                    |k    sJ d S )Nr  r   r  Tsplit_blocks)rO   rc   rl   r;   r<   r   !_check_to_pandas_memory_unchangedr  rS   _valuesflags	writeable)r  r  rd   s      r1   test_singleton_blocks_zero_copyr     s    
"(29T:::;;<tfEEA &ad;;;;/11[[]]F$<%////#%%(8888888r3   c                    t          j                    } | j        di |}t          j                    r;t          d|j        j        dz            }t          j                    ||z   k    sJ d S t          j                    |k    sJ d S )N   r5   r+   )rO   r  rS   r   r	  r  rU   nbytes)r  kwargsr  r0   max_index_allocations        r1   r  r    s    /11A $&& >  #3	(81(<==')).>AU.UVVVVVV'))-=======r3   c                  @   t          j        t          j        g ddz  d          t          j        g ddz  d          t          j        g ddz  d          t          j        g ddz  d          t          j        g ddz  d          t          j        g ddz  d          t          j        g ddz  d          t          j        g ddz  d          gd	 t          d
          D                       } t	          | d
           t          | d           d S )Nr  r   r  rp  r  r  r  r  c                 8    g | ]}d                      |          S zf{}formatr8  s     r1   r2   z/test_to_pandas_split_blocks.<locals>.<listcomp>'  s"    ***AQ***r3   r   Tr  )rO   rc   rl   r?   _check_blocks_createdr  )r  s    r1   test_to_pandas_split_blocksr    s4   

$4000
$4000
$4000
$4000
$4000
$4000
$4000
$4000	 +*q***		, 		,A !Q%ad;;;;;;r3   c                 r    t          t          j                  t          d          k     r| j        S | j        S )Nz1.1.0)r   r9   rR  _data_mgrr  s    r1   _get_mgrr  -  s-    r~!1!111xwr3   c                     |                      d          }t          t          |          j                  |k    sJ d S )NTr  )rS   r   r  blocks)r  numberr0   s      r1   r  r  4  s=    	&&Ax{{!""f,,,,,,r3   c                      dfd}  |             }t          |dd            |             }t          |d           d S )N2   c                      t          j        d t                     D             d t                     D                       S )Nc                     g | ]<}t          j        t          j                            d           ddd                   =S )r  Nr5   )rO   rl   r;   r=   r>   r8  s     r1   r2   zEtest_to_pandas_self_destruct.<locals>._make_table.<locals>.<listcomp>=  sM     
 
 
  HRY__U++CCaC011
 
 
r3   c                 8    g | ]}d                      |          S r  r  r8  s     r1   r2   zEtest_to_pandas_self_destruct.<locals>._make_table.<locals>.<listcomp>A  s"    ...ELLOO...r3   )rO   rc   r?   )r<  s   r1   _make_tablez1test_to_pandas_self_destruct.<locals>._make_table<  sT    x 
 
 1XX
 
 
 /.U1XX...	0 0 	0r3   T)r  self_destruct)r  )r  )r  r  r<  s     @r1   test_to_pandas_self_destructr  9  si    
A0 0 0 0 0 	A%ad$OOOO 	A%at<<<<<<r3   c                     d} t          j        t          j        | t          j                            }t          j        |||gg d          }t          j                    }|                                }d| z  dz  }t          j	                    r|dz  }t          j                    ||z   k    sJ d }t          j                     t          j                    |k    sJ d S )Nr  r   )r  r'  r  r   r      )rO   rl   r;   r<   r   rc   r  rS   r   r	  r  r  )r;  rr   r  r  r0   new_allocations         r1   test_table_uses_memory_poolr  K  s    A
(29Qbh///
0
0C
#sC"4"4"455A/11	AUQYN$&& ##%%*:^*KLLLL 	AJLLL#%%)9999999r3   c                  B   t          j        ddig          } |                                 }|j        t	          j        d          k    sJ |d         }t          j        |          }t          j        |          |k    sJ ~t          j        |          |dz
  k    sJ d S )Nr   r   rI   r   )rO   rl   rS   r   r;   r  getrefcount)rr   r	  r  refcounts       r1   test_object_leak_in_numpy_arrayr  `  s    
(S!H:

C]]__F<28H------
)Cs##H?38++++?38a<//////r3   c                  |   t          j        ddig          } t          j        | gdg          }|                                d         }|j        t          j        d          k    sJ |d         }t          j        |          }t          j        |          |k    sJ ~t          j        |          |dz
  k    sJ d S )Nr   r   r  rI   r   )rO   rl   rc   rS   r   r;   r  r  )rr   rc   re   r  r  s        r1   test_object_leak_in_dataframer  l  s    
(S!H:

CHcUTF##E
//

D
!C9******
a&Cs##H?38++++?38a<//////r3   c                     ddgddgg} t          j                    }t          j        | d         |          }t          j        | t          j        |                    }t	          j        | d         t          j                  }t          j        t	          j        | d         t          j                  t	          j        | d         t          j                  g          }|j        |k    sJ |                    t          j        |                    sJ |                    t          j        |                    sJ d S )	Nr  g333333@g      "@g      E@r   rp  r   r   )	rO   r    rl   rr  r;   r9   rm   ri   rT   )r   r  rq  r  r  r  s         r1   test_array_from_py_float32r	  }  s   #Jd$D

A8DG!$$$D8Drx{{+++Da
333I	28DG2:>>>8DG2:>>>@ A AI 9>>>>;;rx	**+++++;;rx	**+++++++r3   c                  D   t          j                    } t          j        | g          }|j                            d          j                            d          }t          j        dd          }t          j	        
                    ||          }|j        |k    sJ t          j	        
                    |t          j        d                    }|d                                         |d                                         k    sJ |d                                         |d                                         k    sJ t          j        dgd                              t          j        d	                    }t          j        d
gd                              t          j        d                    }|j        t          j        d	          k    sJ t          j        d          }t!          j        t$                    5  |                    |           d d d            n# 1 swxY w Y   |                    |d          }|                    |          sJ t          j        t          j        d          t          j        d          t          j        d          g          }	t          j        g dt          j        d                    }t!          j        t$                    5  t          j        |	t          j        d                     d d d            n# 1 swxY w Y   t!          j        t$                    5  t          j	        
                    |	t          j        d                     d d d            n# 1 swxY w Y   t          j	        
                    |	t          j        d          d          }|                    |          sJ t          j        |	t          j        d          d          }|                    |          sJ d S )Nz	tzlocal()r,  rc  r  rp  r   i r   rb  {   ro   Fr>  r   r  r  )r   r   r   rd  )r   nowr9   rm   r  r  
tz_convertrO   r  r  rR   ri   r  to_pydatetimerl   rk  r   r9  r:  rT   r-  )
rt  ro   s_nyc
us_with_tzrr   r  r_   targetrd   r  s
             r1   test_cast_timestamp_unitr    s   
,..C
	3%AD[)),778JKKEd'9:::J
(

u:

6
6C 8z!!!!8T(:(:;;Dq6<<>>U1X335555557==??ad00222222 (F8'
*
*
*
/
/T0B0B
C
CCxG,,,11",s2C2CDDH 8r|D))))))\#F	z	"	"                 XXf5X))F==""""" YQb)9)92<;M;MNOOFx			T(:(:;;;H	z	"	" 2 2
bl40011112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
z	"	" > >
V",t*<*<===> > > > > > > > > > > > > > > X!!&r|D/A/A!NNF=="""""Xf2<#5#5EBBBF=="""""""s6   H((H,/H,1)L&&L*-L*
4N

NNc                     t           j                                        } |                                 }t	          j        |gt	          j        dd                    }t          j                            ||gddg          }|	                                }t	          j        |          }|
                    |          sJ d S )Nrc  r,  r  rp  r.  stop)r9   r-  r  r  rO   rl   r  r(  r   rS   rT   )tsts_dtrr   r  rd   r   s         r1   (test_nested_with_timestamp_tz_round_tripr    s    					BE
(E7d7I!J!J!J
K
K
KC^''c
Wf4EFFFFxH??6"""""""r3   c                  H   t           j                                        } |                                 }dD ]k}|dv rd }nd }t	          j        | gt	          j        |                    }t	          j        | gt	          j        |d                    }t          j                            ||gdd	g          }t          j                            ||gdd	g          }|	                                }t          |d
         d         t                    sJ |d
         d         j        J t          |d
         d	         t                    sJ |d
         d	         j        J |	                                }t          |d
         d         t                    sJ |d
         d         j        J |d
         d                             t          j                  }	 ||	                              d            ||          k    sJ t          |d
         d	         t                    sJ |d
         d	         j        J t	          j        d|i          	                                }t          |d         d
         d         t                    sJ |d         d
         d         j        J t          |d         d
         d	         t                    sJ |d         d
         d	         j        J t	          j        d|i          	                                }t          |d         d
         d         t                    sJ |d         d
         d         j        J t          |d         d
         d	         t                    sJ |d         d
         d	         j        J md S )Nr  )ro   rb  c                 .    |                      d          S )Nr   r  r  r0   s    r1   truncatez/test_nested_with_timestamp_tz.<locals>.truncate  s    AII!I$<$<<r3   c                     | S r	  r+   r  s    r1   r  z/test_nested_with_timestamp_tz.<locals>.truncate  s    AXr3   rp  r,  r  r.  r  r   rx  r   )r9   r-  r  r  rO   rl   r  r(  r   rS   r   r   ry  
astimezoner   r{  rV   rc   )
r  r  ra  r  rr   r  arr3arr4rd   utc_dts
             r1   test_nested_with_timestamp_tzr!    su   					BE " &9 &9; =<<<%%%ht",t"4"4555x2<9K#L#L#LMMM~))3*w6GHH~))4,&8IJJ!!&)G,h77777ay!(000&)F+X66666ay '///!!&)G,h77777ay!(4447#..x|<<x''t'44GGGG&)F+X66666ay '333 3+&&0022&+a.18<<<<<c{1~g&-555&+a.0(;;;;;c{1~f%,4443+&&0022&+a.18<<<<<c{1~g&-999&+a.0(;;;;;c{1~f%,8888M&9 &9r3   c                     t          j        g dd          } t          j        g dt                    }t          j        g d          }dD ]}|                     |          }t
          j                            ||          }t
          j                            |||          }|d         d	k    rFt          j	        t                    5  |                                 d d d            n# 1 swxY w Y   |                                }t          j                            ||
          }t          j        t          j        |          t          j        |                     |                                }	|	                                                                dk    sJ |}
|d         d	k    r|                    |dd                    }
t          j                            t          j        |d|
          |
          }t          j        t          j        |	          t          j        |                     d S )Nr   r5   rg  r   )FFTFFF)r   r   r   r   r   r   r   r   r  r   ur  r   r=  )r;   rj  rl   rI   r5  rO   r@  r   r   r9  r  rS   r9   r  
from_codesr\   rn   rm   rx   rz   where)src_indicesr.  ru   
index_typerC  d1d2pandas1
ex_pandas1pandas2signed_indices
ex_pandas2s               r1   test_dictionary_with_pandasr/    sH   )IIIq))K///v>>>J8===>>D* J J
$$Z00++GZ@@++GZd+KKa=Cy))                ,,..^..w:.NN

ry1129Z3H3HIII,,..~~##%%**** !a=C$^^JqrrN;;N^..rxb8F0H 0H:D / F F
 	ry1129Z3H3HIIII9J Js   C--C1	4C1	c                 8   |6|t           j                            dt          |          |                    }n4t          j        fdt          |           D             t                    }|dk    r&d |t           j                            |           |k     <   |S )Nr   r@   c                 .    g | ]}t                    S r+   r7  )r/   r  	item_sizes     r1   r2   z"random_strings.<locals>.<listcomp>*  s!    EEEq<	22EEEr3   r   )r;   r=   r  r   rl   r?   rI   rand)rX  r2  pct_nullr.  rd   s    `   r1   random_stringsr5  &  s    BI--aZq-IIJEEEEE!HHEEE &( ( ( !||/3ry~~a  8+,Mr3   c                  ^   t           j                            d           t          j        t          dd          d          } t          j        t          dd          d          }t          j        t          dd          d          }t          j                            t           j                            d	t          |           d
d          |           }t          j                            t           j                            d	t          |          d
d          |          }t          j                            t           j                            d	t          |          d
d          |          }t          j        t           j                            d	t          |          d
d          t           j        
                    d
          dk               }t          j                            ||          }t          j        | ||g          }t          j        ||||g          }	t          j        |                    d          |                    d          |                    d          |                    d          g          }
|	                                }|
                                }|j        j        |                                k                                    sJ |                    d          }d ||                                <   t)          j        ||           d S )Ni90  r       r  rp  r  r  r  r   r  r  r  r  r  r-   )r;   r=   r  rO   rl   r5  r@  r   r  r   r3  concat_arraysr  rk  rS   r+  r  r  r5  rx   r\   rn   )r(  r)  d3r  rB  r  r  r  expected_dictr   a_denserd   result_denseexpected_denses                 r1   "test_variable_dictionary_to_pandasr>  3  s   INN5	.b))	9	9	9B	.b))	9	9	9B	.++(	;	;	;B			'	'
	!SWW4t<<

 
B 
		'	'
	!SWW4t<<

 
B 
		'	'
	!SWW4t<<b
B 
BB 

	!SWW4t<<Y^^D!!C'
 
 
B 
		'	'B	/	/B$b"b\22M
"b"b)**A 1 1 " 1 1 " 1 1 " 1 1 3 4 4G
 [[]]F$$&&LJ!]%<%<%>%>>CCEEEEE]]5))N,0N<&&(()<88888r3   c                     t          j        g d                                          } t           j                            g d|           }|                                }t          j        t          j        g dt                    t          j        ddgt                    g          }t          j        ||           d S )N)r   r   r   r   r   ry  )r   r   r   r   r   )rO   rl   r  r)  r   rS   r9   rm   r;   rI   r\   rn   )rT  rr   rd   r_   s       r1   (test_dictionary_encoded_nested_to_pandasr@  _  s    H...//AACCE
,
"
"999e
4
4C]]__Fy"(???&AAA(C:V<<<> ? ?H 68,,,,,r3   c                     t          j        g d          } t          j        t          j                    t          j                    rt          j                    nt          j                              }t          j	        |           }|
                                g dk    sJ |j                            |          sJ t          j        g d          } t          j	        |           }|
                                g dk    sJ |j                            |          sJ t          j	        | t          j	        g d                    }|
                                g dk    sJ |j                            |          sJ d S )N)r   r   r   )r   r   Nr   )FFFTr  )r   r   NN)r9   r  rO   r.  r   r   r	  rO  r  rl   r  ri   rT   r;   )r+  r  rd   s      r1   test_dictionary_from_pandasrB  l  sq   
.
)
)CM
		(:<<M")++ M
 Xc]]F0000;m,,,,, ....
/
/CXc]]F!6!6!66666;m,,,,, Xc)D)D)D E EFFFF!7!7!77777;m,,,,,,,r3   c                     t           j                            t          j        ddgd          t          j        ddgt
                              } t          j        t          j                    t          j	                              }t          j        | |          }|j
                            |          sJ |                                ddgk    sJ t          j        t          j                    t          j                              }t          j        t          j                  5  t          j        | |          }d d d            n# 1 swxY w Y   t          j        t          j                    t          j	                    d	
          }d}t          j        t$          |          5  t          j        | |          }d d d            n# 1 swxY w Y   |                                ddgk    sJ t          j        t          j                    t          j	                              }t          j        | |t          j        dd	g                    }|j
                            |          sJ |                                dd gk    sJ t          j        g           } t          j        t          j                    t          j	                              }t          j        | |          }|j
                            |          sJ |                                g k    sJ t          j        t          j                    t          j                              }t          j        | |          }|j
                            |          sJ |                                g k    sJ t          j        ddg          } t          j        | t          j	                              }t          j        ddgt          j	                              }|                    |          sJ |                                ddgk    sJ d S )Nr   r   r   r   r   r   )r'  
value_typerp  T)r'  rD  r  z4The 'ordered' flag of the passed categorical values r$  Fr  )r9   r  r$  r;   rl   rI   rO   r.  r   r  ri   rT   r  r   r   r   r9  rq  r:  )r+  r  rd   r  r_   s        r1   *test_dictionary_from_pandas_specified_typerE    s$    .
#
#
!Qv&&&#s6(J(J(JL LC
 -28::")++
F
F
FCXc$$$F;c"""""#s++++ -2799
D
D
DC	r	'	' ) )#C((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) -799dD D DC
@C	z	-	-	- ) )#C((() ) ) ) ) ) ) ) ) ) ) ) ) ) )#s++++ -28::")++
F
F
FCXc"(E4=*A*ABBBF;c"""""#t,,,, .

C
-2799
E
E
ECXc$$$F;c"""""####
-2799
D
D
DCXc$$$F;c"""""#### .#s
$
$CXc	,,,Fxc
555H=="""""#s++++++s$   .EEE2GGGc                  L   t          t          j                  t          d          k     rt          j        d           t          j        dg did          } |                     d          } t          j        | d         j	        j
                  }t          j        | d         j	        j        j                  }t          |t          j                  sJ t          j                            | d                   }t          j                            ||          }||k    sJ d S )Nz1.3.0z:PyArrow backed string data type introduced in pandas 1.3.0r0   r   rY  r   zstring[pyarrow]r   r  )r   r9   rR  r   rS  r:   r5  rO   rl   r+  codesr  r|   r   r  rR   r@  r   )r^   rC  r.  r_   rd   s        r1   :test_convert_categories_to_array_with_string_pyarrow_dtyperI    s    r~!1!111PQQQ	s1112:K	L	L	LB	:		Bhr#w{())G"S'+0788Jj"(+++++x##BsG,,H++GZ@@FXr3   c                  J   t          j        dt          j        g dd          i          } t          j        |           }t          j        g dt          j                              }|d                             d                              |          sJ t          j	        dt          j
                    fg          }t          j        | |          }t          j        g dt          j
                              }|d                             d                              |          sJ t          j        | d                   }|                    |          sJ t          j        | d         t          j
                              }|                    |          sJ t          j        | d         j                  }|                    |          sJ t          j        | d         j        t          j
                              }|                    |          sJ d S )Nr   r  Int64r   r   rq  rp  )r9   r:   rm   rO   rc   rl   r   r7  rT   rD   r!   r|   )r^   rd   r_   rD   r  s        r1   test_array_protocolrL    s   	sBIlll'BBBC	D	DB
 Xb\\Fxbhjj11H!9??1$$X..... Ybjll+,--FXb(((Frz||44I!9??1$$Y///// XbgF=="""""XbgBJLL111F==##### Xbgn%%F=="""""Xbgn2:<<888F==#######r3   c                   :     e Zd Z fdZd Zed             Z xZS )DummyExtensionTypec                 n    t                                          t          j                    d           d S )Nz,pyarrow.tests.test_pandas.DummyExtensionTypesuper__init__rO   r   r   	__class__s    r1   rR  zDummyExtensionType.__init__  s9    G	I 	I 	I 	I 	Ir3   c                     dS Nr3   r+   r  s    r1   __arrow_ext_serialize__z*DummyExtensionType.__arrow_ext_serialize__      sr3   c                 X    |dk    sJ |t          j                    k    sJ  |             S rV  )rO   r   )clsstorage_type
serializeds      r1   __arrow_ext_deserialize__z,DummyExtensionType.__arrow_ext_deserialize__  s5    S    rxzz))))suur3   )r  r  r  rR  rW  classmethodr]  __classcell__rT  s   @r1   rN  rN    sg        I I I I I     [    r3   rN  c                     t          j        g dt          j                              }t           j                            t                      |          S )Nr   rp  )rO   rl   r   ExtensionArrayfrom_storagerN  )r   ri   storages      r1   PandasArray__arrow_array__re    sB     hyyyrxzz222G))*<*>*>HHHr3   c                    t          j        g dt          j                              }t           j                            t                      |          }|                     t          j        j	        dt          d           |                     t          j        j        dt          d           t          j        ddd	          j        t          j        d
d          j        fD ]}t          j        |          }|                    |          sJ t          j        t          j        |                    }|                    |          sJ t          j        t          j        |                    }|                    |          sJ t          j        t          j        d|i                                        d                              d          }|                    |          sJ d S )Nr   rp  __arrow_array__F)raising
2012-01-01r   Dri  r   r   r   r   )rO   rl   r   rb  rc  rN  setattrr9   r  PeriodArrayre  IntervalArrayrl  rm  rT   rm   r   rc   r:   r  r7  )monkeypatchrd  r_   rr   rd   s        r1   *test_array_protocol_pandas_extension_typesro    s    hyyyrxzz222G --.@.B.BGLLH	-/@2E  C C C	/1B2E  C C CacBBBH!!Q''-/ 	' 	'#}}X&&&&&")C..))}}X&&&&&"(3--((}}X&&&&&",Sz2233::3??EEaHH}}X&&&&&&	' 	'r3   c                    t          |t          j                  r|}n|                    d          }|                                }t          j        |d         d          |j        |j        t          |          z            }|d         }|Vt          j	        
                    t          j                    t          |          d |g          }t          j        |          }n(t          j        t          |          t                    }t          j                            |                                | d          }|S )Nr   r=  r   r   F)r{   )r   rO   r  r7  buffersr;   
frombufferoffsetr   BooleanArrayfrom_buffersr  r  r,  r"   r9   r  IntegerArrayr{   )r   rl   rr   buflistr   bitmaskru   int_arrs           r1   _Int64Dtype__from_arrow__rz    s    %""  kk!nnkkmmG=G444
3:C((*DajG++HJJC4/3 3z$ws3xxt,,,i$$TYY[[4%e$DDGNr3   c                    t          j        g dt          j        g dd          g dd          }t          j        |          }|                                }t          |          j        d         j        j	        t          j	        d          k    sJ t          |          j        d	         j        j	        t          j                    k    sJ t          j        ||           t          j        d
t          j        g dd          i          }t          j        |          }|                                }t          |          j        d         j        j	        t          j                    k    sJ t          j        ||           t          t           j                  t          d          k     r0|                     t           j        j        j        j        d           n/|                     t           j        j        j        j        d           |                                }t-          t          |          j                  d	k    sJ t          |          j        d         j        j	        t          j	        d          k    sJ d S )Nr   ro  rK  r   )r   r   r   r  r   r   r   r   r  	1.3.0.dev__from_arrow__)r9   r:   rl   rO   rc   rS   r  r  r|   r   r;   
Int64Dtyper\   r]   r   rR  delattrcorer  integer_IntegerDtypeNumericDtyper   )rn  r^   rc   rd   r   rq  s         r1   test_convert_to_extension_arrayr  1  sC    
iibhyyy@@@ii	 	
 
B HRLLE __FF"1%,2bhw6G6GGGGGF"1%,2bmooEEEE&"%%% ,RXlll'BBBC
D
DCXc]]FFF"1%,2bmooEEEE&#&&& r~!5!555GN"02B	D 	D 	D 	D 	GN"/1A	C 	C 	C __Fx&''1,,,,F"1%,2bhw6G6GGGGGGGr3   c                   *     e Zd Z fdZd Zd Z xZS )MyCustomIntegerTypec                 n    t                                          t          j                    d           d S )Nz-pyarrow.tests.test_pandas.MyCustomIntegerTyperP  rS  s    r1   rR  zMyCustomIntegerType.__init__V  s9    H	J 	J 	J 	J 	Jr3   c                     dS rV  r+   r  s    r1   rW  z+MyCustomIntegerType.__arrow_ext_serialize__Z  rX  r3   c                 (    t          j                    S r	  )r9   r~  r  s    r1   r  z#MyCustomIntegerType.to_pandas_dtype]  s    }r3   )r  r  r  rR  rW  r  r_  r`  s   @r1   r  r  T  s[        J J J J J        r3   r  c                    t          j        g dt          j                              }t           j                            t                      |          }t          j        d|i          }|                                }t          |          j	        d         j
        j        t          j                    k    sJ t          j        g dd          }t          j        ||           |                                }t          |          j	        d         j
        j        t          j                    k    sJ t          j        dt          j        g dd          i          }t          j        ||           t'          t          j                  t'          d          k     r0|                     t          j        j        j        j        d           n/|                     t          j        j        j        j        d           |                                }t          |          j	        d         j
        j        t7          j        d          k    sJ t          j        g d          }t          j        ||           t9          j        t<                    5  |                                 d d d            d S # 1 swxY w Y   d S )	Nr   r   r   rK  r   r|  r}  r   )rO   rl   r   rb  rc  r  rc   rS   r  r  r|   r   r9   r~  rm   r\   rn   r:   r]   r   rR  r  r  r  r  r  r  r;   r   r9  r:  )rn  rd  rr   rc   rd   r_   s         r1   /test_conversion_extensiontype_to_extensionarrayr  a  s   h|||RXZZ00G


(
()<)>)>
H
HCHc3Z  E ]]__FF"1%,2bmooEEEEyW555H68,,,__FF"1%,2bmooEEEE|S"(<<<w"G"G"GHIIH&(+++ r~!5!555GN"02B	D 	D 	D 	D 	GN"/1A	C 	C 	C ]]__FF"1%,2bhw6G6GGGGGy&&H68,,,	z	"	"                   s   J66J:=J:c            	         t          j        dt          j        g dt          j                              i          } |                                 }|d         j        t          j        d          k    sJ |                     t          j                    t          j                    ij	                  }t          |d         j        t          j                  sJ t          j        dt          j        g dt          j                              i          } |                     t          j                    t          j                    ij	                  }|d         j        t          j        d          k    sJ t          j        t          j        dt          j        g dd          i                    } |                                 }t          |d         j        t          j                  sJ |                     t          j                    t          j        d          ij	                  }t          |d         j        t          j                  sJ d S )	Nr   r   r   types_mapperr   rK  r   rj  )rO   rc   rl   r   rS   r   r;   r9   r~  r  r   r   r:   PeriodDtype)rc   rd   s     r1   'test_to_pandas_extension_dtypes_mappingr    s   Hc28IIIrxzz::;<<E __F#; 1 11111 __28::r}*G*K_LLFfSk'77777 Hc28IIIrxzz::;<<E__28::r}*G*K_LLF#; 1 11111 HR\3'(J(J(J"KLLMME__FfSk'77777__hjj"."5"56:  < <FfSk'8888888r3   c                     t          t          j                  t          d          k     rt          j        d           t          j        t          j        dt          j                    d          t          j        dt          j	                    d          g          } t          j
        |           }t          j        t          j        d|           g          }t          j        ddt          j	        d	          d
iddd d
ig                              d|i          }t
          j                            ||          }|                    t          j
                  }t          j                            ||           d S )Nz1.5.2zTest relies on pd.ArrowDtyperY  Fr  rh  Tr   r   )rY  rh  rq  r  )r   r9   rR  r   rS  rO   r  r   r  r    
ArrowDtyperD   r:   r;   r5  rQ   rR   rS   rO  r]   )r  pd_typerD   df0rc   r  s         r1   4test_to_pandas_extension_dtypes_mapping_complex_typer    sM   r~!1!1112333iHUBHJJ777HUBJLL4888	
 G mG$$GY00122F
,DA778D../	
 
 feW  H  V 44E
//r}/
5
5CJ!!#s+++++r3   c                  D   t          t          j                  t          d          k     rt          j        d           t          j        ddd          j        t          j        dd          j        fD ]} t          j        |           	                                }t          j
        |           }t          j        ||           t          j        d	| i          d	         	                                }t          j
        | d	
          }t          j        ||           d S )Nz1.1z'ExtensionDtype to_pandas method missingri  r   rj  ri  r   r   re   rj   )r   r9   rR  r   rS  rl  rl   rm  rO   rS   rm   r\   rn   rc   )rr   rd   r_   s      r1   test_array_to_pandasr    s    r~//=>>>acBBBH!!Q''-/ 1 1#((**9S>>
vx0005#,''.88::9Su---
vx00001 1r3   c            
         t          j        t          j        dd                    } t          j        |           }t          t           j                  t          d          k    r3t          j        |	                                j
        | j
                   d S t          j        |	                                j
        t          j        dddddddddgd	
                     d S )Nr   r   )r.  endr   z1.0r   )r  r   r5   rI   r   )r9   r:   rm  rO   rc   r   rR  r\   assert_index_equalrS   r   r   r^   rc   s     r1   5test_roundtrip_empty_table_with_extension_dtype_indexr    s    	B-A1===	>	>	>BHRLLEr~//
eoo//5rx@@@@@
eoo//5 hQ(?(?12Q(?(?12Q(?(?(A .67 7 7	8 	8 	8 	8 	8r3   r   r   r   c                    t          t          j                  t          d          k     rt          j        d           t          j        ddgddgddgd	t          j        t          j                              
          	                    |           }|
                                }t          j        |          }|                    t          j                  }t          j        ||           d S )Nz1.5.0zArrowDtype missingr   r5   r   r   r   r   r  r   r  )r   r9   rR  r   rS  r:   r  rO   r   r   r{   rc   rS   r\   r]   )r   r^   r_   rc   rd   s        r1   !test_to_pandas_types_mapper_indexr    s    r~!1!111()))	QQQ	
 	

 mBHJJ''
 
 
 i  wwyyHHRLLE__"-_88F&(+++++r3   c                     t          t          j                  t          d          k     rt          j        d           t          j        g dt          j                              } t          j                    t          j                    ij	        }| 
                    |          }|j        t          j                    k    sJ t          j                    d ij	        }| 
                    |          }|j        t          j        d          k    sJ t          j                    t          j                    ij	        }| 
                    |          }|j        t          j        d          k    sJ d S Nz1.2.0z$Float64Dtype extension dtype missingr   r  r   )r   r9   rR  r   rS  rO   rl   r   r~  r  rS   r   r;   r!   Float64Dtyper   r  rd   s      r1   !test_array_to_pandas_types_mapperr    s*   r~!1!111:;;;8IIIrxzz**D HJJ04L^^^66F<2=??**** HJJ%)L^^^66F<28G,,,,,, JLL"/"3"348L^^^66F<28G,,,,,,,,r3   c                  L   t          t          j                  t          d          k     rt          j        d           t          j        t          j        g dt          j                              g          } t          | t
          j
                  sJ t          j                    t          j                    ij        }|                     |          }|j        t          j                    k    sJ t          j                    d ij        }|                     |          }|j        t          j        d          k    sJ t          j                    t          j                    ij        }|                     |          }|j        t          j        d          k    sJ d S r  )r   r9   rR  r   rS  rO   r  rl   r   r   r`  r~  r  rS   r   r;   r!   r  r  s      r1   )test_chunked_array_to_pandas_types_mapperr    sR    r~!1!111:;;;RXiii<<=>>DdBO,,,,, HJJ04L^^^66F<2=??**** HJJ%)L^^^66F<28G,,,,,, JLL"/"3"348L^^^66F<28G,,,,,,,,r3   c                  j   g d} g d}t          j        | d          }t          j        |d          }t          j        g dd          }d}d}t          j        d	| it          j        d
ddd                    }t           j                            ||gd	dg          }|                    dt          j	        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          j        |	|           t          j        d| it          j        d
ddd                    }
t           j                            ||gd|g          }|                    dt          j	        |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          j        ||
           t          j        d	| it          j        d
ddd                     }t           j                            ||gd	|g          }|                    dt          j	        |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          j        ||           t          j        d	| it          j        d
ddd          |g          }t           j                            |||gd	d|g          }|                    dt          j	        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          j        ||           t          j        d	| it          j        d
ddd           |g          }t           j                            |||gd	||g          }|                    dt          j	        ||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          j        ||           d S )N)r   rY  Nrh  )r   r   r   r   r4  rp  r  r   r  __index_level_1__r   r   r   r5   rS  r   r   r      pandasr&  rI   r'  r(  )rk   r  r  r  r  z0.23.4)r  r  rU   r  )rO   rl   r9   r:   r   rQ   r   replace_schema_metadatajsondumpsrS   r\   r]   )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r5s                         r1   )test_metadata_compat_range_index_pre_0_12r    s    +**H###Hhxf---Ghxf---Gh|||':::O$J$J 
X]1aae444
6 
6 
6B 
		w8%(%L 
 
2 
2B		#	#4:$g)-/309/7.8'-B	!D !D  E
 #&(+)2(0&*	, ,
 #((-)0(/&*	, ,	-  (!) )
 
% 
 
B( 
B"b!!! 
x]1aae444
6 
6 
6B 
		w8%*J$7 
 
9 
9B		#	#4:)l)-/309/7.8'-B	!D !D  E
 #&(+)2(0&*	, ,
 #((2)0(/&*	, ,	-  (!) )
 
% 
 
B( 
B"b!!! 
X]1aad333
5 
5 
5B 
		w8%(*$5 
 
7 
7B		#	#4:)l)-/309/7.8'-B	!D !D  E
 #&(+)2(0&*	, ,
 #'(2)0(/&*	, ,	-  (!) )
 
% 
 
B( 
B"b!!! 
XmAqqu555x@
B 
B 
BB 
		wA%(%$< 
 
> 
>B		#	#4:$j1)-/309/7.8'-B	!D !D  E
 #&(+)2(0&*	, ,
 #((-)0(/&*	, ,
 #'(2)2(0&*	, ,-  (+) )
 
% 
 
B2 
B"b!!! 
XmAqqt444h?
A 
A 
AB 
		wA%(*j$A 
 
C 
CB		#	#4:):6)-/309/7.8'-B	!D !D  E
 #&(+)2(0&*	, ,
 #'(2)0(/&*	, ,
 #'(2)2(0&*	, ,-  (+) )
 
% 
 
B2 
B"b!!!!!r3   c                     g d} g d}t          j        | d          }t          j        |d          }t          j        | |dt          j        ddd	d
                    }t          j        ||d          }|                    dt          j        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          j        ||           d S )Nr   )r   r   r   r  r   rp  r4  r4  r   r   r5   rS  r   r   r  rI   zmixed-integer)r  r  rk   r  r  r   )r  rk   r  r  r   r&  r?   )kindrk   r.  r   r  z0.25.0)r  rU   r  r  )rO   rl   r9   r:   r   rc   r  r  r  rS   r\   r]   )r  r  r  r  r_   rc   rd   s          r1   'test_metadata_compat_missing_field_namer    sp    ||H###Hhxg...Ghxf---G|  ]1aae4446 6 6H H71122E ))4:#!' /	1 1 "& ') ) "' )+ +	 !	  '3( ( 
 
+  E: __F&(+++++r3   c            	          t          j        d          } t          j        t	          j        t	          j        dd|                               }|j        j        }|d         d         d         dk    sJ d S )	Nr   r   r   rj   r   r  rk   6)	r;   r   rO   rc   r9   r:   r   rD   r
  rk   rc   r  s      r1   .test_metadata_index_name_not_json_serializabler    sl    8A;;DHR\a(F(F(FGGGHHE|+HO$Q'/3666666r3   c            	          d} t          j        t          j        t          j        dd|                               }|j        j        }|d         d         d         dk    sJ d S )Nr   r   r   rj   r   r  rk   )rO   rc   r9   r:   r   rD   r
  r  s      r1   -test_metadata_index_name_is_json_serializabler    sd    DHR\a(F(F(FGGGHHE|+HO$Q'/1444444r3   c            
      8   t          j        t          j        dd          t          j        dd          t          j        dd          t          j        dd          gt          j        dd          t          j        dd          t          j        dd          t          j        dd          gd	          } | d
                             d          | d
<   | j        j        | j        j        ft          j        d          t          j        d          fk    sJ | S )Nz0001-01-01 00:00rb  z2012-05-02 12:35z2012-05-03 15:42z3000-05-03 15:42z1991-01-01 00:00r  z2050-05-03 15:42)
dateTimeMs
dateTimeNsr  rI   rK  zM8[ns])r9   r:   r;   rW  r5  r  r   r  r  s    r1   make_df_with_timestampsr    s    
M,d33M,d33M,d33M,d33	
 M,d33M,d33M,d33M,d33	
  
 
B ,'..x88B| M!45
rx)):     Ir3   c                    t                      }t          j                            |          }| dz  }t	          j        ||           t	          j        |          }|                    d          }t          j	        ||           d S )Nztimestamps_from_pandas.parquetTtimestamp_as_object)
r  rO   rQ   rR   pqwrite_table
read_tablerS   r\   r]   )tempdirr^   rc   filenamerd   r   s         r1    test_timestamp_as_object_parquetr    s     
!	"	"BH  $$E99HN5(###]8$$F


t

4
4C"c"""""r3   c                      t                      } t          j                            |           }|                    d          }t          j        | |           d S )NTr  )r  rO   rQ   rR   rS   r\   r]   )r^   rc   r   s      r1   %test_timestamp_as_object_out_of_ranger  +  sP     
!	"	"BH  $$E
//d/
3
3C"c"""""r3   
resolutionr  r   r,  r  i  i  c                    t          j        |gt          j        | |                    }t          j        d|i          }|                    d          |                    d          d         fD ]}|j        t          k    sJ t          |d         t                    sJ |r0|d         j	        J |d         j	        
                    |          }n|d         j	        J |}|d         |k    sJ d S )Nr  rp  r   Tr  r   )rO   rl   r  rc   rS   r   rI   r   r   ry  fromutc)r  r   r  rr   rc   rd   r_   s          r1   'test_timestamp_as_object_non_nanosecondr  4  s    (B4bl:"===
>
>
>CHc3Z  E 	$//D11#6 % % |v%%%%&)X..... 	!9#///ay'//33HH!9#+++HayH$$$$$% %r3   c            	      V   t          j        d          } dd l}|                     d          } |j         |j        ddddd                    }t          j        d	t          j        |g          i          }|                    d
          }t          j        |          |k    sJ d S )Nru  r   x   i  r   r  r  9   timestamp_colTr  )	r   rz  r   r|  localizerO   rc   rl   rS   )ru  r   r   r  rc   rd   s         r1   %test_timestamp_as_object_fixed_offsetr  M  s    v&&DOOO$$H		,8,T1b"bAA	B	BBHorx~~677E___66F8Fu$$$$$$r3   c                  $    t          d           d S )Nzpandas_threaded_import.py)r   r+   r3   r1   test_threaded_pandas_importr  Y  s    -.....r3   c                  t   t          j        d          } t          j        t           j                  | k    sJ t          j        dt          j                    gi          }t
          j                            |          }|                                 t          j        t           j                  | k    sJ d S )Nm8r   )	r;   r   r0  r9   r:   rO   rQ   rR   rS   )r_   r^   r  s      r1   $test_does_not_mutate_timedelta_dtyper  ^  s    x~~H8BN##x////	sR^--./	0	0B
R  AKKMMM8BN##x//////r3   c                      ddl m}  d | dd          ig} | ddd	
          g}t          j        ||d          }|                                }|d         d                                         |d         k    sJ d S )Nr   )r   timedelta_1r  r   )ru  r=  r   (   rv  )r  rv  ru  )r  timedelta_2r  )r   r   rO   rc   rS   to_pytimedelta)r   r  r  rc   r^   s        r1   %test_does_not_mutate_timedelta_nestedr  j  s     #"""""!99Ra#H#H#HIJK91b"===>KH[MMNNE			BmQ..00KNBBBBBBr3   c                     t          j        t          j        dt          j        t          j        t          j                    t          j        t          j        dt          j                              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| 	          }t          j
        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          j
        dd
d igd dddiidd iddidggi          }|                                }|                    d          }t          j        ||           t          j        ||           t           j                            || 	          }|                    |          sJ t           j                            || 	          }|                    |          sJ d S )Nr   r   )r   Nr5   s   abcr   r   s   defrq  r   r  strictmaps_as_pydicts)rO   rD   r   rr  r3  r   r  rX  rc   r9   r:   rS   r\   r]   rQ   rR   rT   )rD   rc   expected_default_dfexpected_as_pydicts_df
default_dfas_pydicts_dftable_default_roundtriptable_as_pydicts_roundtrips           r1   ,test_roundtrip_nested_map_table_with_pydictsr  w  s-   Y
H		29bhsBIKK.H.H-I#J#JKK 	
 	
  F H
#v #tC=12	
  	 	 	E ,	}dq3-&8%9'(3+&6S&M8J%K%M N 	O   \	YK#vc4[c6]!C!CD
 	  ""JOOHO==M*&9:::-)?@@@ h22:f2MM<</00000!#!5!5mF!5!S!S<<23333333r3   c            	         t          j        ddg          } t          j        g d          }t          j        g t          j                              }t          j        ddgddggt          j        t          j                                        }t          j        g ddd	gd
dggt          j        t          j                                        }t          j        g t          j        t          j                                        }t           j                            ddg| |          }t           j                            g d||          }t           j                            ddg||          }t          j        t           j                            ddg|                              d          t           j                            ddg|                    d                                        d          t           j                            ddg|                              d          g          }	|		                                }
t          j        dddgfdddgfggdd
dgfggg g          }|		                    d          }t          j        ddgddgdgdd
dgigg g          }|	                    dd          }|	                                }t          j        dd
dgfggg g          }|	                    d          }t          j        dd
dgigg g          }t          j                    5  t          j        ddt                     t!          j        |
|           t!          j        ||           t!          j        ||           t!          j        ||           ddd           n# 1 swxY w Y   t          j        t          j        t          j                    t          j        t          j                                                  dt          j        ddffd} ||
|	            |||	            |||            |||           dS )z=
    Slightly more robust test with chunking and slicing
    r   rY  )rh  rS  r0  r1  r   r   r   r  Nr%  r&  r2  r   r5   )r   r   r   r   r1  r  r  r   rY  r   rJ   rK   r  returnc                     t          j        t           j                            |                     }|                    d           |                    |          sJ d S )Nrp  Trg  )rO   r  r  rR   rj  rT   )r  r   array_roundtripr9  s      r1   assert_roundtripzMtest_roundtrip_nested_map_array_with_pydicts_sliced.<locals>.assert_roundtrip  s]    *28+?+?R+?+P+PQQ  d +++{{?+++++++r3   )rO   rl   r  rr  r9  r   r  r)  r8  rS   r9   rm   rX   rY   rZ   r[   r\   rn   r3  )keys_1keys_2keys_3items_1items_2items_3map_chunk_1map_chunk_2map_chunk_3r  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  r9  s                       @r1   3test_roundtrip_nested_map_array_with_pydicts_slicedr    s    Xuen%%FX33344FXb")++&&Fh
sc3Z 
 G h	TD#;c
+
 G h

 G
 +))1a&&'BBK+)))))VWEEK+))1a&&'BBK$
  !Q55;;A>>
  !Q):):1)=)=>>DDQGG
  !Q55;;A>>&  M #,,..N i3*
Sz2	343*
	
)   #,,X,FFN isS#J	/	/0
#s	
)     A&&F",,..%'Y3*
	
0 & &"
 #,,X,FF%'Y
#s	
0 & &"
 
	 	"	" V V*I 2	4 	4 	4
~/FGGG
~/FGGG
46TUUU
46TUUUV V V V V V V V V V V V V V V 
"'")++rx	'<'<==	>	>B, ,T , , , , , ,
 ^]333^]333*F333*F33333s   6A0N22N69N6c                     t          j        g d          } t          j        ddgddgddggt          j        t          j                                        }dd	g}t           j                            || |          }t          j        t          j                    t          j        t          j                                        }t          j        t           j	        j
                  5  |                    d
           d d d            n# 1 swxY w Y   |                    d          }t          j        ddgddgdg          }|                    t           j                            ||                    rJ |                                }t          j        dddgfdddgfdddgfgg          }|                    t           j                            ||                    sJ t#          |          t#          |          k    sJ t%          ||          D ]\  }	}
t#          |	          t#          |
          k    sJ t%          |	                                |
                                          D ]<\  }}|d         |d         k    sJ t)          j        |d         |d                   sJ =t#          |          t#          |          k    sJ t%          ||          D ]t\  }	}
t#          |	          t#          |
          k    sJ t%          |	|
          D ]<\  }}|d         |d         k    sJ t)          j        |d         |d                   sJ =ud S )NrG  r   r   r   r  r   rK  r   r   r  r  lossyr  rp  r   rY  r   )rO   rl   rr  r  r9  r   r3  r   r9  r  ArrowExceptionrS   r9   rm   rT   r  rR   r   r  r:  r;   array_equal)r  r:  rz  mapsr9  r
  r  r  r	  row1row2tup1tup2s                r1   4test_roundtrip_map_array_with_pydicts_duplicate_keysr    s   8)))**DH
sc3Z#s,
 E !fG;""7D%88D	bhry{{33	4	4B 
rv,	-	- 1 1x0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ^^G^<<N ic
C:..)   {{28//R/HHIIIII ^^%%N i
#s	usCj1EC:3FG)   ;;rx++N+DDEEEEE
 ~#&=">">>>>>.*ABB 4 4
d4yyCII%%%%djjllDJJLL99 	4 	4JD$7d1g%%%%>$q'47333333	4 ~#&=">">>>>>.*ABB 4 4
d4yyCII%%%%dD// 	4 	4JD$7d1g%%%%>$q'47333333	44 4s   )DDDc            	      p   t          j        ddgddgg dgd dgddggt          j        t          j                                        } t          j        g d	          }g d
}t           j                            || |          }t          j        t                    5  |	                    d           d d d            n# 1 swxY w Y   |	                                }t          j        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    sJ t          ||          D ]t\  }}t          |          t          |          k    sJ t          ||          D ]<\  }}	t          j        |d         |	d                   sJ |d         |	d         k    sJ =ud S )Nr   r   r   r  r%  r&  r2  rB  )r   rY  rh  rS  r0  r1  )r   r5   r   r  r  r   rY  rh  rS  r0  r1  r   r   )rO   rl   rr  r  r9  r   r   r9  r  rS   r9   rm   r   r  r;   r  )
r  r:  rz  r  r  r	  r  r  r  r  s
             r1   %test_unhashable_map_keys_with_pydictsr  &  s*   8
sc3ZcUT3K#sD
 D H@@@AAEiiG;""7D%88D 
y	!	! 0 0w///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 ^^F i*e	Sz512
euenc{F&;sCj%=PQ)   v;;#5666666&"9:: & &
d4yyCII%%%%dD// 	& 	&JD$>$q'47333337d1g%%%%%	&& &s   B??CCc                  B   t          j        t          j        ddd          d          } t          j        dt          j        |           i          }|                    d          }|                                }|j        dk    sJ t          j
        ||            d S )N2012r5   r  r  datetime_columnrj   )r9   rm   r   rO   rc   rl   r  rS   rk   r\   rn   )r  rc   	table_colrd   s       r1   )test_table_column_conversion_for_datetimer"  G  s    
 Yr}VQ;LMMM-/ / /FH'&)9)9:;;E.//I  ""F;+++++66*****r3   c                      t          j        t          j        ddd                    } t          j        |           }|                                }t          j        ||            d S )Nr  r5   r  r  )r9   rm   r   rO   rl   rS   r\   rn   )r  rr   rd   s      r1   "test_array_conversion_for_datetimer$  V  sZ    
 Yr}VQ;LMMMNNF
(6

C]]__F66*****r3   c            
         dd} ddz  } | t          j        d|||gi                     d|i} | t          j        d|||gi                     |g} | t          j        d|||gi                     |g} | t          j        d|||gi                     d|i} | t          j        d	|||gi                     d
|i}t          j        t          j                    t          j        t          j        dt          j                    fg                              }t          j        d|fg          } | t          j        d|||gi          |           d S )Nc                    t           j                            | |          }|                    d           |                    d          j        }|dk    sJ t          j        |                    dd          |            d S )Nrq  Trg  r   r   r  )r  r  )	rO   rQ   rR   rj  r  ra  r\   r]   rS   )r^   rD   tabra  s       r1   	roundtripz-test_nested_chunking_valid.<locals>.roundtriph  s    h""2f"55$ ZZ]]-
A~~~~
cmm$<D , F FGI	K 	K 	K 	K 	Kr3      0i T*rN  struct_fieldr*  r  lossolr   r  rq  r	  )	r9   r:   rO   r3  r  rr  r  rX  rD   )	r(  r0   r  r  r+  r,  
map_of_losmap_typerD   s	            r1   test_nested_chunking_validr/  b  s   K K K K 	yAIblI1ay122333a FIblI'?@AABBBCEIblGeUE%:;<<===(CIblECc?3445555
!CIblECc?344555sJwry{{x	NBIKK+H*I J JKKM MHY*+,,FIblFZZ$HIJJ     r3   c                      t          j        ddgddggddg          } t          j                            |           }|j        dd	gk    sJ |                                                    |           sJ d S )
Nr  r  r  g?s   col1s   col2r   r  r  )r9   r:   rO   rQ   rR   r   rS   rT   r  s     r1    test_bytes_column_name_to_pandasr1    s    	SzC:.'8J	K	K	KBH  $$E&&!11111??##B'''''''r3   c                  .    t          j        d           d S )Nzarrow_39313.py)	test_utilr   r+   r3   r1   !test_is_data_frame_race_conditionr4    s     ,-----r3   )r   )NFNTNFF)NNr  r	  )r   N)r  r   r  multiprocessingr  r  rX   collectionsr   r   r   r   r   r   
hypothesisrB  hypothesis.strategies
strategiesrD  r   numpyr;   numpy.testingrO  r   r	   rL  r_  numpy.exceptionsImportErrorpyarrow.pandas_compatr
   r   pyarrow.tests.utilr   r   r   pyarrow.tests.strategiestestsrF  utilr3  pyarrow.vendored.versionr   pyarrowrO   r   r  pandasr9   pandas.testingr\   pandas_examplesr   r   r  
pytestmarkrB   rf   rs   r~   r   r   r  r  rQ  rS  rU  rK  r  r  r  r  r  r  r  re  rn  rr  rw  r  r  rC  r  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  r  rX  r  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  r/  r5  r>  r@  rB  rE  rI  rL  ExtensionTyperN  re  ro  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra  r  r  r  r  r  r  r  r"  r$  r  r/  r1  r4  r+   r3   r1   <module>rK     s  $ 
			       



  # # # # # # > > > > > > > > > > > > > >     " " " " " " 

(*(D%% 
 
 
	
 	
 	
 	
 	
 	
 	
 	

    	BBB @ ? ? ? ? ? ? ? A A A A A A A A A A ' ' ' ' ' ' ' ' ' & & & & & & & & & , , , , , ,    	%%%%%%% 	 	 	D		LLLLLLLLL 	 	 	D	
 [
   > <A,059+0%*	= = = =>
& 
& 
& 
& 8< $K K K K0- - - -j4 j4 j4 j4 j4 j4 j4 j4Zb b b b b b b bJ	 IIIK K. .K K.& IIIK K, ,K K,,}	$ }	$ }	$ }	$ }	$ }	$ }	$ }	$H~- ~- ~- ~- ~- ~- ~- ~-Be1 e1 e1 e1 e1 e1 e1 e1Pn	( n	( n	( n	( n	( n	( n	( n	(b`: `: `: `: `: `: `: `:F94 94 94 94 94 94 94 94xB B BA A AQ% Q% Q% Q% Q% Q% Q% Q%h     + + +. fXw$788< < 98<7 7 7     ! ! !$ 	T1	2	233    43 # # #
1 1 1L L L " " "&1 1 1") ) )60 0 0) ) )4/ / /0) ) )6A A A"5 5 5WG WG WGtB B B*9 9 9, , ,J( ( (( ( (0) ) ) 	G	V	F	W	W	W	W	h	h	h	y!	y!	y!	f	f	g	!			g&	i 	("(828::&&	'	')<=	r1		y)	d		Z(	dE	"	"L1	3 	4&!1 :. .; :.: : :49 9 9> > >< < <"  - - -
= = =$: : :*	0 	0 	0
0 
0 
0", , ,*.# .# .#b# # #-9 -9 -9h!J !J !JH
 
 
 
)9 )9 )9X
- 
- 
-- - -02, 2, 2,j  ($ $ $:    )    I I I I' ' '4  , H  H  HF
 
 
 
 
"* 
 
 
! ! !H9 9 92, , ,21 1 1
8 
8 
8 3c
"344, , 54,"- - -. - - -8f" f" f"R0, 0, 0,f7 7 75 5 5  6 	# 	# 	## # # '8'8'899&89::q! 4 4hhtQ6J6JKLL% % ML ;: :9%*	% 	% 	% / / /	0 	0 	0
C 
C 
C*4 *4 *4ZK4 K4 K4\14 14 14h& & &B+ + +	+ 	+ 	+ # # #L( ( ( . . . . .sY   
A! A A! AA! AA! !A+*A+B$ $B,+B,0C C
C