
    j                    j   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZm
Z
mZmZmZ d dl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j6                  Z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.m0Z1 	 d dl2Z3d dl4mZ5 d
dl6m7Z7m8Z8 ejr                  jd                  Z:ddZ;	 	 	 	 	 ddZ<ddZ=	 	 ddZ>ddZ? G d d      Z@ G d d      ZAejr                  j                  dg d      d        ZCejr                  j                  dg d      d        ZD G d d      ZE G d d      ZF G d d      ZG G d d       ZH G d! d"      ZI G d# d$      ZJd% ZKd& ZL G d' d(      ZMd) ZNd* ZOejr                  j                  d+d,gd-gf      d.        ZPd/ ZQd0 ZRd1 ZS ej                   e)j                  e)j                              d2        ZWd3 ZXd4 ZYd5 ZZd6 Z[d7 Z\d8 Z]d9 Z^d: Z_d; Z`d< Zad= Zbd> Zcd? Zdd@ ZedA ZfdB ZgdC ZhdD ZidE Zjejr                  j                  dF e/j                         dGf e/j                         dHf e/j                         dIf e/j                         dJf e/j                         dKf e/j                         dLf e/j                         dMf e/j                         dNf e/j                         dOf e/j                         dPf e/j                         dQf e/j                         dRf e/j                         dSf e/j                         dTf e/j                         dTf e/j                         dUf e/j                  dVW      dUf e/j                         dXf e/j                   e/j                   e/j                                     dYf e/j                  dZd[      d\f e/j                  d]      d^f e/j                  d_d`      daf e/j                  db      dcf e/j                   d_      dcfg      dd        Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds ZddtZdu Zdv Zdw Zdx Zdy Zdz Z G d{ d|e/j0                        Zdd}Zd~ Zd Zd Z G d de/j0                        Zd Zd Zd Zd Zd Zejr                  j                  ddddgg      d        Zd Zejr                  jd                  d        Zejr                  j                  d e/j                          e/jN                          e/jP                         g      ejr                  j                  dg dgg      d               Zd Zd Zd Zd Zd Zejr                  j`                  d        Zd Zejr                  j                  dg d      ejr                  j                  dddg      ejr                  j                  d e
dd
d
       e
dd
d
      g      d                      Zd Zejr                  jf                  d        Zd Zd Zd Zd Zd Zd Zd Zd Zejr                  jz                  d        Zd Zejr                  jf                  d        Zd Zy# e$ r
 d dlmZ Y .w xY w# e$ r dZY <w xY w# e$ r Y w xY w# e$ r Y w xY w)    N)OrderedDict)datedatetimetime	timedeltatimezone)ZoneInfo)VisibleDeprecationWarning)get_logical_type_pandas_api)invoke_scriptrandom_asciirands)Version)parquet   )dataframe_with_arraysdataframe_with_listsc                    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                  j                  |       dkD  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      t        |       D cg c]  }t!        |       c}d gt        | dz
        D cg c]  }t!        |       c}z   d gz   dg| z  d      S c c}w c c}w )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]    )r(   r)   strstr_with_nulls	empty_str)pd	DataFramenparanger   r   r   r   r   r   r   r    r!   randomrandnranger,   )sizexs     @/tmp/pip-target-jj7clzyk/lib/python/pyarrow/tests/test_pandas.py_alltypes_exampler9   E   s`   << 4rxx0"))D		2 	"))D		2 	"))D		2	
 			$bhh/ 	4rxx0 	4rxx0 	4rxx0 	299T4 	299T4 			%) 	ryy!:D'68 			";T(8:  			";T(8:!$ 			";T(8:%( 	"))At3CD)* 	299Q4EF+, 99Q4EF99Q4EF %d,1A,&E$(O#DqCF#DDvMTD[5  0 -#Ds   K'Kc                 <   |rt         j                  nt         j                  }|j                  | |||rdnd      }	|	j	                  |      }
|r|	j
                  j                  |      sJ |M| }|j                  D ]<  }||   j                  dk(  s||   j                  t        j                  d i      ||<   > t        j                         5  t        j                  ddt               t!        j"                  |
|||rdnd	
       d d d        y # 1 sw Y   y xY w)Nr*   r   )schemapreserve_indexnthreadsuse_threadsobjectignoreelementwise comparison failedequivF)check_dtypecheck_index_type)paRecordBatchTablefrom_pandas	to_pandasr;   equalscolumnsr   replacer1   nanwarningscatch_warningsfilterwarningsDeprecationWarningtmassert_frame_equal)dfexpectedr?   expected_schemarD   r;   r<   as_batchklasstableresultcols               r8   _check_pandas_roundtripr]   d   s   
 'BNNBHHEb-;,7qQ  @E ___5F ||""?333## 	FC}""h. ( 5 5rvvtn E	F 
	 	 	" =57I	K
fhK;I5:	== = =s   9DDc                     t        j                  | d|      }|||}||j                  |k(  sJ t        j                  |j                         | j                        }t        j                  | |       y )NTrI   typename)	rF   arrayr`   r/   SeriesrJ   rb   rS   assert_series_equal)stype_expected_pa_typearrr[   s        r8   _check_series_roundtriprj      si    
((1$U
3C-5 #xx++++YYs}}QVV4F1f%    c                 \   t        j                  | d||      }|j                         }t        j                  |       }||j
                  |j                         k(  s$J |j
                  ||z  j                         k(  sJ |~|t        j                  |       }n6t        j                  |       j                         }d ||j                         <   |j                  dk(  r!|j                  t        j                  d i      }t        j                  t        j                  |      |d       y )NT)rI   maskr`   r@   Fcheck_names)rF   rc   rJ   r/   isnull
null_countsumrd   copyr   rM   r1   rN   rS   re   )valuesrV   rm   r`   ri   r[   values_nullss          r8   _check_array_roundtriprv      s    
((6t$T
BC]]_F99V$L|~~!1!1!3333~~$"5!:!:!<<<<<yy(Hyy(--/H$(HTYY[!>>X%''7H299V,hEJrk   c                     t        j                  | d|      }|j                         }t        j                  ||        y )NTr_   rF   rc   rJ   nptassert_array_equal)np_arrayr`   ri   r[   s       r8   "_check_array_from_pandas_roundtripr|      s/    
((8D
9C]]_F68,rk   c                   h   e Zd ZdZd Zd Zd Zd Zej                  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                  j1                  d      d        Zd Zd Zd Zd Zd Zej                  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+d- Z,ej                  j                  d.e-j\                  e-j^                  e-j`                  e-jb                  g      d/        Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7y)5TestConvertMetadataz9
    Conversion tests for Pandas metadata & indices.
    c                     t        j                  dg di      }t        j                  j	                  |      }|j                  d      j                  dk(  sJ y )Nr   r   r*      0)r/   r0   rF   rH   rI   fieldrb   selfrU   rZ   s      r8   test_non_string_columnsz+TestConvertMetadata.test_non_string_columns   sD    \\1i.)$$R({{1~""c)))rk   c                 .   t        j                  g dg dd      }|j                  d      }t        j                  t
              5  t        j                  j                  |      }|j                  d      j                  dk(  sJ 	 d d d        |j                         }t        |j                  j                        |j                  _
        t        j                  t
              5  t        ||d       d d d        y # 1 sw Y   xxY w# 1 sw Y   y xY w)N      ?       @      @)      @      @      @)r   r   r   1TrV   r<   )r/   r0   	set_indexpytestwarnsUserWarningrF   rH   rI   r   rb   rs   r,   indexr]   )r   rU   rZ   rV   s       r8   "test_non_string_columns_with_indexz6TestConvertMetadata.test_non_string_columns_with_index   s    \\o/BC\\!_ \\+& 	.HH((,E;;q>&&#---	. 779!(.."5"56\\+& 	9#B379	9 	9	. 	.	9 	9s   A C?'D?DDc                    t        j                  g dg dg ddddg      }t        j                  j	                  |ddg      }t        j                  j	                  |ddg         }|j                  |      sJ t        j                  j	                  |ddg      }t        j                  j	                  |ddg         }|j                  |      sJ y )Nr   )r   r   r   )r*         r   r   r*   r   r   rL   )r/   r0   rF   rH   rI   rK   rG   )r   rU   rZ   rV   record_batch_tablerecord_batch_expecteds         r8   test_from_pandas_with_columnsz1TestConvertMetadata.test_from_pandas_with_columns   s    \\iI)D#$a&* $$R!Q$888''Aq6
3u%%%^^77QF7K " : :2q!f: F$++,>???rk   c                 t    t        j                  dg di      }dg|j                  _        t	        |d       y )Ndatar   aTr<   )r/   r0   rL   namesr]   r   rU   s     r8   %test_column_index_names_are_preservedz9TestConvertMetadata.test_column_index_names_are_preserved   s-    \\69-.5

48rk   tzNEurope/Brusselsc           	          t        j                  t        j                  j	                  dd      t        j
                  ddd|            }t        |d       y )	Nr   r   z
2021-01-0150D)periodsfreqr   r   Tr   )r/   r0   r1   r3   r4   
date_ranger]   )r   r   rU   s      r8    test_column_index_names_datetimez4TestConvertMetadata.test_column_index_names_datetime   sB    
 \\IIOOAq!MM,"M
 	 48rk   c           
      ~   t        j                  t        j                  d      t        j                  d      ggt         j                  j                  t        j                  d      gt        j                  d      t        j                  d      gg      t        j                  d      g      }t        |d	       y )
Nr      r   r*   r   r   )rL   r   Tr   )r/   r0   decimalDecimal
MultiIndexfrom_productr]   r   s     r8   $test_column_index_names_with_decimalz8TestConvertMetadata.test_column_index_names_with_decimal   s    \\ooa '//!"456MM..//!$%(:GOOA<N'OP ??1%&
 	 48rk   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                  j                  |      }t        j                  j                  |      }t        |j                        dk(  sJ |j                         }t        j                  ||       t        |j                  t         j                        sJ t        j                  |j                  d      dk(  sJ |j                  j                  |k(  sJ |j                         }t        j                  ||       t        |j                  t         j                        sJ t        j                  |j                  d      dk(  sJ |j                  j                  J y )Nfoor   r   r*   r   r   r      r*   steprb   r   r   r   r      r   r   r   )r/   r0   
RangeIndexrF   rH   rI   lenr;   rJ   rS   rT   
isinstancer   r   get_rangeindex_attributerb   )r   
index_namerU   df2rZ   table_no_index_namer[   result2s           r8   test_range_index_shortcutz-TestConvertMetadata.test_range_index_shortcut   sn   
\\3- "a LN llC.!#q!!46 $$R( hh2237 5<< A%%%"
fb)&,,66633FLL&IQNNN||  J...%//1
gs+'--77733GMM6JaOOO}}!!)))rk   c           	      8   t        j                  dg dit        j                  dddd            }t        j                  j                  |d	
      }|j                  dk(  sJ d|j                  v sJ |j                         }t        j                  ||       y )Nr   r   r   r   r*   r   r   r   Tr   )r/   r0   r   rF   rH   rI   num_columnscolumn_namesrJ   rS   rT   )r   rU   rZ   restoreds       r8   $test_range_index_force_serializationz8TestConvertMetadata.test_range_index_force_serialization
  s     \\3- "a GI $$R$=  A%%%*****??$
h+rk   c                 @   t        j                  t        j                  j	                  dd      ddg      }t        j                         5  t        j                  d       t        j                  dd	t               t        |d
       d d d        y # 1 sw Y   y xY w)Nr   r*   r   br   erroractionrA   make_block is deprecatedTr   )r/   r0   r1   r3   r4   rO   rP   simplefilterrQ   rR   r]   r   s     r8   test_rangeindex_doesnt_warnz/TestConvertMetadata.test_rangeindex_doesnt_warn  s{     \\"))//!Q/#sD$$& 	=!!1 ##46H $Bt<	= 	= 	=s   ?BBc                     t         j                  j                  ddgddgg      }t        j                  g d|      }t	        |d       y )	NonetwoXYr   r   r*   r   )r   cr   Tr   r/   r   from_arraysr0   r]   r   rL   rU   s      r8   test_multiindex_columnsz+TestConvertMetadata.test_multiindex_columns'  sE    --++ENS#J-
  \\8'J48rk   c                     t         j                  j                  ddgt        j                  ddg      gddg      }t        j                  g d|	      }t        |d
       y )Nr   r   z
2017-08-01z
2017-08-02level_1level_2r   r   r   Tr   )r/   r   r   DatetimeIndexr0   r]   r   s      r8   #test_multiindex_columns_with_dtypesz7TestConvertMetadata.test_multiindex_columns_with_dtypes.  sa    --++  ,!=> i( , 
 \\8'J48rk   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       y )	Nr   r   r   Tr   皙?  r@   )r/   r0   Indexr@   r]   r   r   s     r8   (test_multiindex_with_column_dtype_objectz<TestConvertMetadata.test_multiindex_with_column_dtype_object9  s    
 \\1#rxx6'BC48 \\1#rxxV'DE48 \\1#rxxdAq!"((4 548rk   c                     t         j                  j                  ddgddgg      }t        j                  g d|      }t	        |d       y )	N   あ   いr   r   r   r   Tr   r   r   s      r8   test_multiindex_columns_unicodez3TestConvertMetadata.test_multiindex_columns_unicodeK  s>    --++eU^c3Z,HI\\8'J48rk   c                 N   t         j                  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        y # 1 sw Y   y xY w)Nr   r   r   r   r   r   r   r   rA   r   Tr   )
r/   r   r   r0   rO   rP   r   rQ   rR   r]   r   s      r8   test_multiindex_doesnt_warnz/TestConvertMetadata.test_multiindex_doesnt_warnP  s    --++eU^c3Z,HI\\8'J$$& 	=!!1 ##46H $Bt<	= 	= 	=s   ?BB$c                    t         j                  j                  t        j                  dd      t        j                  ddg      g      }t        j
                  t        j                  ddgd      |      }t        |d        y )Nr   r*   r   r   ra   r   r   )r/   r   r   r   r   r0   rd   r]   )r   
multiindexrU   s      r8   test_multiindex_rangeindexz.TestConvertMetadata.test_multiindex_rangeindex_  sa    ]]..]]1a "((Aq6"23

 \\"))QF5ZH48rk   c                 L    t        j                  g d      }t        |d       y )Nr   Tr   r/   r0   r]   r   s     r8   test_integer_index_columnz-TestConvertMetadata.test_integer_index_columng  s    \\8948rk   c                 p    t        j                  g ddt        j                  g      }t	        |d       y )Nr         ?r   Tr   )r/   r0   r1   rN   r]   r   s     r8   $test_float_column_index_with_missingz8TestConvertMetadata.test_float_column_index_with_missingk  s%    \\83-P48rk   z?ignore:The DataFrame has column names of mixed type:UserWarningc                 T    t        j                  g ddd g      }t        |d       y )Nr   Ar   Tr   r   r   s     r8   %test_string_column_index_with_missingz9TestConvertMetadata.test_string_column_index_with_missingo  s#     \\83+N48rk   c                 :   t        j                  g dt         j                  j                  g dg dgd dg      g d      }t	        j
                         r"t        j                  j                  |d	      }nCt        j                  t              5  t        j                  j                  |d	      }d d d        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 |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 y # 1 sw Y   xY w)N))r   r   @)r*   r   g@)r   r   g?)r   r   r   )r   r*   r   r   r   )r   N__index_level_0__)r   rL   Tr   rL   rb   r   
field_namerN   Noner   index_columns__index_level_1__)r/   r0   r   r   r   uses_string_dtyperF   rH   rI   r   r   r   r;   pandas_metadatar1   isnan)r   rU   tjscol1col2col3idx0r   
idx0_descr	foo_descrs              r8   test_index_metadata_field_namez2TestConvertMetadata.test_index_metadata_field_namev  s   \\9--++ ),Um ,  5
 ((*$$R$=Ak* BHH((D(ABXX%%&(m#dD$F|s"""F|tL1111((*88DL)))%...<'''%///F|2222F|tL1111 "? 3
I0000L!Z///F|###E!!!< I---6{i'''7B Bs   "FFc                 6   t        j                  g dg ddg d      }t        |d       t        j                  |      }t        j
                  dt        j                         fd	t        j                         fd
t        j                         fg      }|j
                  j                  |      sJ |j                         }|j                  j                  t        j                  g d            sJ |j                  |j                  cxk(  rdk(  sJ  J y )Nr   r   r   r   r\   r   )
         r   Tr   r\   r   r  r*   )r/   r0   r]   rF   rZ   r;   r   rK   rJ   r   r   ndim)r   rU   r  rW   r   s        r8   test_index_level_name_bumpz.TestConvertMetadata.test_index_level_name_bump  s    \\I>
 	 48 HHRL))BHHJ "((*- "((*-%
 
 xx///kkmyy 6777xx277'a'''''rk   c                 $   t        j                  ddgddgdt         j                  j                  ddgdd	ggd d g
            }t	        |d       t
        j                  j                  |d      }|j                  j                  g dk(  sJ y )Nr   r*   r   r   r  r  r  d      r   r   Tr   )r\   r   r  __index_level_2__)
r/   r0   r   r   r]   rF   rH   rI   r;   r   )r   rU   r  s      r8   %test_index_level_name_bump_multiindexz9TestConvertMetadata.test_index_level_name_bump_multiindex  s    \\F!Q8--++bC:&tTl , 
 	 48HH  D 9xx~~ "L L 	L Lrk   c                 T   t        j                  g dt        j                  t        d      d            }t        j
                  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 y )N)r   r   r   )r*   r   r   )r   r   r   defcategoryr   r   Tr   column_indexesrb   pandas_typecategorical
numpy_typer   metadatanum_categoriesr   orderedF)	r/   r0   r   listrF   rH   rI   r;   r  r   rU   r  r	  r"  mds         r8   test_categorical_column_indexz1TestConvertMetadata.test_categorical_column_index  s    \\9HHT%[
;
 HH  D 9XX%%-.f%---m,===l+v555J'"#q((()}%%%rk   c                    t        j                  g dt        j                  t        d      d            }t        j
                  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 y )Nr  r   stringzra   r   Tr   r"  rb   r  r%  r,   r@   r#  unicoder&  r   encodingUTF-8)r/   r0   r   r)  rF   rH   rI   r;   r  r   r  r   r*  s         r8   test_string_column_indexz,TestConvertMetadata.test_string_column_index  s    \\9HHT%[y9
 HH  D 9XX%%-.f%222f%)EEEEl+ 224E(
 	
 
 m,	999J'2w!||*~(((rk   unitusnsc           
         i }t        t        j                        t        d      k\  rd|i}t        j                  g dt        j                  ddddd|      }t
        j                  j                  |d	
      }|j                  j                  }|d   \  }|d   J |d   dk(  sJ |r|d   d| dk(  sJ |d   dk(  sJ |d   }|d   dk(  sJ y )N2.0.0r3  r  
2017-01-01r   America/New_Yorkstartr   r   r   Tr   r"  rb   r#  
datetimetzr%  datetime64[]r'   r&  r    )
r   r/   __version__r0   r   rF   rH   rI   r;   r  )r   r3  
ext_kwargsrU   r  r	  r"  r+  s           r8   test_datetimetz_column_indexz0TestConvertMetadata.test_datetimetz_column_index  s   
2>>"gg&66 $J\\9MM "A2DHR
 HH  D 9XX%%-.f%---m,<<<!,/[a3HHHH!,/3CCCCJ'*~!3333rk   c                     t        j                  dt        j                  ddd      i      }|j                  d      }t	        |d       y )Nr   r8  r   r9  r:  Tr   )r/   r0   r   r   r]   r   s     r8   test_datetimetz_row_indexz-TestConvertMetadata.test_datetimetz_row_index  sE    \\"A2D
 
 \\#48rk   c                     t        j                  g dg dd      }|j                  j                  d      |d<   |j	                  d      }t        |d       y )Nr   r   r   r!  r   Tr   )r/   r0   r   astyper   r]   r   s     r8   test_categorical_row_indexz.TestConvertMetadata.test_categorical_row_index  sC    \\		:;$$++j)3\\#48rk   c                     t        j                  ddgt        d            }t        j                  t
              5  t        j                  j                  |       d d d        y # 1 sw Y   y xY w)Nr   r   aar   )	r/   r0   r)  r   raises
ValueErrorrF   rH   rI   r   s     r8   *test_duplicate_column_names_does_not_crashz>TestConvertMetadata.test_duplicate_column_names_does_not_crash  sN    \\8X.T
C]]:& 	%HH  $	% 	% 	%s    A%%A.c                    ddgddgg}|D ]  }t         j                  j                  |dgd      }t         j                  j                  |gdg      }t         j                  j                  |||g      }t        j                  t              5  |j                          d d d        t        j                  t              5  |j                          d d d         y # 1 sw Y   >xY w# 1 sw Y   xY w)Nr   r   r   Fsafer   )
rF   DictionaryArrayr   rG   rH   from_batchesr   rK  
IndexErrorrJ   )r   indicesindsri   batchrZ   s         r8   #test_dictionary_indices_boundscheckz7TestConvertMetadata.test_dictionary_indices_boundscheck  s    q6Ar7# 		"D$$00u50ICNN..uug>EHH))5%*?@Ez*    z* "!" "		"
   " "s   C C(C%	(C1	c                 T    t        j                  ddgidg      }t        |d       y )Nr   r   u   うr   Tr   r   r   s     r8   *test_unicode_with_unicode_column_and_indexz>TestConvertMetadata.test_unicode_with_unicode_column_and_index(  s%    \\55'*5':48rk   c                 *   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                  j                  |       d d d        |j                         }|j                  j                  j                  t              |_        t        j                  t              5  t        ||d       d d d         y # 1 sw Y   zxY w# 1 sw Y   xY w)Nr   r*   r   r   rF  r      a2r   r   Tr   )r/   r0   r   r@   rL   r   r   r   rF   rH   rI   rs   rt   rG  r,   r]   )r   rU   colsrV   s       r8   test_mixed_column_namesz+TestConvertMetadata.test_mixed_column_names-  s    \\AaV45T]QHq#h7 	=D$f5BJ k* )$$R() wwyH!zz0077<Hk* ='X7;== =	=) )
= =s   $ C=#D	=D		D	c                    dg}dj                         }||i}t        j                  |      }t        j                  j                  |d      }|j                         }|j                  d   |j                  d   k(  sJ |j                  j                  d   |j                  j                  d   k(  sJ |j                  d   |k(  sJ y )Nr   r   Tr   r   )
encoder/   r0   rF   rH   rI   rJ   rt   r   rL   )r   column_datakeyr   rU   r  r   s          r8   test_binary_column_namez+TestConvertMetadata.test_binary_column_name>  s    glln[!\\$ HH  D 9kkmyy|szz!},,,xxq!SYY%5%5a%8888zz!}###rk   c                     d}t        t        |            }t        j                  j	                  g d|gddg      }t        j
                  d|i|      }t        |d	       y )
Nr   )r   r   barfoobarsome_numbersr   numbersr   Tr   )r)  r5   r/   r   r   r0   r]   )r   num_rowsri  r   rU   s        r8    test_multiindex_duplicate_valuesz4TestConvertMetadata.test_multiindex_duplicate_valuesL  s_    uX'))"G,^, * 

 \\9g.e<48rk   c                     t        j                  dddgi      }t        j                  j	                  |      }|j
                  j                  }d|vsJ |d   d   }|d   dk(  sJ |d	   d
k(  sJ y )Nr   s
   some_bytessome_unicodemixedrL   r   r#  bytesr%  r@   r/   r0   rF   rH   rI   r;   r  )r   rU   rZ   r	  data_columns        r8   test_metadata_with_mixed_typesz2TestConvertMetadata.test_metadata_with_mixed_typesX  s    \\6M>#BCD$$R(\\))b   mA&=)W444<(H444rk   c                 @   t        j                  g dg ddg d      }t        j                  j	                  |      }|j                  d      }|j                  |j                  j                               j                         }t        j                  ||       y )Nr   r   rf  bazrF  )r   r   threer   T)ignore_metadata)r/   r0   rF   rH   rI   rJ   castr;   remove_metadatarS   rT   )r   rU   rZ   r[   rV   s        r8   test_ignore_metadataz(TestConvertMetadata.test_ignore_metadataa  sv    \\	0EF 79$$R(6JJu||;;=>Y[ 	 	fh/rk   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                  j                  }d|vsJ |d	   d
   }|d   dk(  sJ |d   dk(  sJ y )Nr   r   r*   r   r   r   r   r`   r;   rn  rL   r   r#  zlist[int64]r%  r@   )
r/   r0   rF   r;   r   list_r   rH   rI   r  )r   rU   r;   rZ   r	  rq  s         r8   test_list_metadataz&TestConvertMetadata.test_list_metadatal  s    \\6QCQC!G#<=>BHHV"((288:2FGHI$$R$7\\))b   mA&=)]:::<(H444rk   c                     t        j                  dddddddgi      }t        j                  j	                  |      }|j
                  j                  }|d   d   d	   d
k(  sJ y )Ndictsr   r*   rF  r   r   rL   r   r#  r@   rp  )r   rU   rZ   r  s       r8   test_struct_metadataz(TestConvertMetadata.test_struct_metadatav  sd    \\711%5QQ7G$HIJ$$R(,,66y)!,];xGGGrk   c                 L   t        j                  dt        j                  d      t        j                  d       gi      }t        j
                  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 y )Ndecimals394092382910493.12341234678z314292388910493.12343437128rn  rL   r   r#  r   r%  r@   r&        	precisionscale)	r/   r0   r   r   rF   rH   rI   r;   r  )r   rV   rZ   r	  rq  s        r8   test_decimal_metadataz)TestConvertMetadata.test_decimal_metadata|  s    << =>!>??!
  $$X.\\))b   mA&=)Y666<(H444:&R*HHHHrk   typc           	      f   t        j                  dt        j                  d      gi      }t	        j
                  t	        j                  d |dd            g      }t        j                  j                  ||      }|j
                  j                  d   d   }|d	   d
k(  sJ |d   dddk(  sJ y )Nr   3.14r   r*   r}  r~  rL   r   r#  r   r&  r  )
r/   r0   r   r   rF   r;   r   rH   rI   r  )r   r  rU   r;   rZ   col_metas         r8   test_decimal_other_bitwidtsz/TestConvertMetadata.test_decimal_other_bitwidts  s     \\3!8 9:;BHHSs1ay9:;$$R$7<<//	:1=&)333
#Q'CCCCrk   c                 d   t        j                  g dd      t        j                  ddd      fD ]  }t        j                  g dg d	d
|      }t        j
                  j                  |      }|j                  d      }|j                         }|dg   }t        |j                  t         j                        rd |j                  _        t        j                  ||       |j                  d      }|j                         }t        j                  ||dg   j                  d              y )Nr   r   r   r   ra   r8  r   r   r   r   r   皙?皙?333333?rF  r   r   r   Tdrop)r/   r   r   r0   rF   rH   rI   remove_columnrJ   r   r   r   r   rS   rT   reset_index)r   r   rU   rZ   table_subsetr[   rV   table_subset2s           r8   !test_table_column_subset_metadataz5TestConvertMetadata.test_table_column_subset_metadata  s    w7lA:KLN 	LE I$029>@BHH((,E ..q1L!++-F3%yH(.."*:*:;&*#!!&(3(66q9M",,.F!!&"cU)*?*?T*?*JK!	Lrk   c                    t        j                  t        t        d            t        t        d            t	        j
                  d      d      }t        j                  j                  |j                  ddg            }|j                  ddg      }|j                         }|ddg   j                  d      }t        j                  ||       y )Nr   )firstsecondvaluer  r  r  )r/   r0   r)  r5   r1   r2   rF   rH   rI   r   selectrJ   rS   rT   )r   rU   rZ   subsetr[   rV   s         r8   'test_to_pandas_column_subset_multiindexz;TestConvertMetadata.test_to_pandas_column_subset_multiindex  s    \\58nE!H~iil$

 $$R\\7H2E%FGw01!!#w()33G<
fh/rk   c                 R   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
                  j                  t        |j                               t        |j                                     }t        j                  j                  |g      }|j                         }t        j                  j                  |      }|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 y )Ntestr   r   c1r}  c2rL   r@   zlist[unicode])rb   r  r&  r%  r#  zlist[empty])r   rF   rc   r  stringrG   r   r)  rt   keysrH   rS  rJ   rI   r;   r  r/   r0   rS   rT   )r   r  r  arraysrbtblrU   tbl2md2r   rV   s              r8   test_empty_list_metadataz,TestConvertMetadata.test_empty_list_metadata  sq    hc
D)"b\288BRXXbiik%:;<288BRXXbiik%:;<
  ^^''!
 hh##RD) ]]_xx##B'kk)) nn<<dBZ$,D EF
c8,9~" &. " &,"
 
 	
 
rk   c                     t        j                  g dg dd      }t        j                  j	                  |      }|j
                  j                  d   J y )Nr   rF  pandas_versionrp  r   s      r8   test_metadata_pandas_versionz0TestConvertMetadata.test_metadata_pandas_version  sE    \\		:;$$R(||++,<=IIIrk   c                 2   i }t        t        j                        t        d      k\  rddi}t        j                  dt        j                  	 dddi|i      }t
        j                  j                  |      }|d   j                  t        j                  dd            }|j                  d	t        j                  d|j                        |      }t        j                  dt        j                  dd      fg      }t
        j                  j                  ||
      }|j                         }|d   j                  j!                  d      |d<   ||fD ]@  }	|	j                  j"                  J |	j%                         }
t'        j(                  |
|       B y )Nr7  r3  r5  r   r   r   UTCr   r   r~  )z
2020-01-01)r   r/   r@  r0   r   rF   rH   rI   rx  	timestamp
set_columnr   r`   r;   rs   dttz_localizer  rJ   rS   rT   )r   rA  rU   rZ   new_col
new_table1r;   
new_table2rV   	new_tabler[   s              r8   test_mismatch_metadata_schemaz1TestConvertMetadata.test_mismatch_metadata_schema  sh   
 
2>>"gg&66 $J\\:r}}(3"#(3'1(3 4 5 $$R(
#((du)EF%%rxx
GLL17


 Zdu)EFGHXX))"V)<
779'
366BB5I$j1 	4I##33???((*F!!&(3	4rk   )8__name__
__module____qualname____doc__r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   rQ   r   r  r  r  r,  r2  rB  rD  rH  rM  rX  rZ  r_  rd  rk  rr  rz  r  r  r  rF   	decimal32	decimal64
decimal128
decimal256r  r  r  r  r  r  r?  rk   r8   r~   r~      s   *
9 
@9
 [[TD*;#<=9 >9	9*6,=9	99$9
=999 [[I99((T(*L&")* [[VdD\24 34299%
"9
="$
95	05HI [[U



	% DDL*0*
XJ
 4rk   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y)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 ]]  \  }}t        j
                  j                  |      }|j                  |      ||<   |j                  t        j                  ||             _ t        j                  |      }t        j                  |      }	t        ||	       y )Nf2f4f8r  rW   )rF   float16r    r!   r1   r3   r4   rG  appendr   r/   r0   r;   r]   )
r   r   fieldsdtypes
num_valuesnumpy_dtypearrow_dtypert   rU   r;   s
             r8   test_float_no_nullsz-TestConvertPrimitiveTypes.test_float_no_nulls  s    &&&( 
(. 	>$KYY__Z0F &k :DMM"((;<=	>
 \\$6"F;rk   c                 |   d}t         j                  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                  j                  |      j                  |      }
t        j                  |
d
|      }|j                  |       |j                  t        j                  ||	             t         j                  |
|<   |j                  |
        t        j                  t        t!        ||            |      }t        j"                  j%                  ||      }|j&                  j)                  t        j&                  |            sJ |j+                         }t-        j.                  ||       y )Nr  r   r  r6   r   r  r  r  )r  r  r  T)rI   rm   r   )r1   r3   randintrF   r  r    r!   r4   rG  rc   r  r   rN   r/   r0   dictziprH   r   r;   rK   rJ   rS   rT   )r   r  	null_maskr  r   expected_colsr  r  rb   r  rt   ri   ex_framerZ   r[   s                  r8   test_float_nullsz*TestConvertPrimitiveTypes.test_float_nulls&  sf   
II%%a*%=A	&&&( #!' 	)D+YY__Z077=F((6t)DCMM#MM"((456 "F9  (	) <<S%> ?(-/ $$VU3||""299V#4555"
fh/rk   c                    t        j                  dddt        j                  gi      }t	        j
                  t	        j                  dt	        j                         d      g      }t        j                  j                  ||d      }|d   j                         g d	k(  sJ t        j                  ||j                                y )
Nr   r   r   TnullableFr;   rQ  r   r   r*   N)r/   r0   r1   rN   rF   r;   r   r   rH   rI   	to_pylistrS   rT   rJ   r   rU   r;   rZ   s       r8   test_float_nulls_to_intsz2TestConvertPrimitiveTypes.test_float_nulls_to_intsD  s    \\3c266 234BHHS"((*tDEF$$RU$CQx!!#|333
b%//"34rk   c                     t        j                  g d      }t        j                  g d      }t        ||t        j                                y )N)        r   r   Ng      )FTTNTrV   r`   )r/   rd   rv   rF   bool_r   rf   rV   s      r8   test_float_nulls_to_booleanz5TestConvertPrimitiveTypes.test_float_nulls_to_booleanL  s2    II1299<=q8"((*Erk   c                     t        j                  dt        j                  g      }t	        j
                  |d      }|j                  dk(  sJ t        j                  |d   j                               sJ y )Nr  FrI   r   r   )	r/   rd   r1   rN   rF   rc   rq   r  as_py)r   rf   ri   s      r8   'test_series_from_pandas_false_respectedzATestConvertPrimitiveTypes.test_series_from_pandas_false_respectedQ  sV    IIsBFFm$hhqe,~~"""xxA'''rk   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                  j                  t        |j                  t        j                  t        j                         j                        t        |j                  t        j                  t        j                         j                        ||      }|j#                  |      ||<   |j%                  t        j&                  ||              t)        j*                  |      }	t        j,                  |      }
t/        |	|
       y )Ni1i2i4i8u1u2u4u8longlong	ulonglongr  r6   r   r  )r   rF   r   r   r   r   r   r   r   r   r1   iinfor3   r  maxminint_rG  r  r   r/   r0   r;   r]   )r   r   r  numpy_dtypesr  r   r  infort   rU   r;   s              r8   test_integer_no_nullsz/TestConvertPrimitiveTypes.test_integer_no_nullsX  sy   } 2779bhhj1288:rxxz 2288:ryy{ 3299;$		!4${BIIK&@
 
". 	8E;88E?DYY&&s488RXXbgg5F5J5J'K'*488RXXbgg5F5J5J'K,6e ' EF !--.DKMM"((5+67	8 \\$6"F;rk   c                 <   t               }g d}|D ]  }t        j                  d|      ||<    t        j                  |      }t        |       |j                         D ]:  }t        j                  |      }|j                         |j                         k(  r:J  y )N)r  r  r  r  r  r  r  r  byteubyteshortushortintcuintcr  uintr  r      r   )r   r1   r2   r/   r0   r]   rt   rF   rc   r  tolist)r   r   r  r   rU   np_arrri   s          r8   test_all_integer_typesz0TestConvertPrimitiveTypes.test_all_integer_typesq  s    }A " 	5E))Be4DK	5\\$# kkm 	6F((6"C==?fmmo555	6rk   c           	         g d}|D ]  }dD ]  }t        j                  g d||z         }||d d d   fD ]  }|j                  j                  r9t	        j                  |      }|j                         |j                         k(  rPJ t        j                  t              5  t	        j                  |      }d d d           y # 1 sw Y   xY w)Nr  r  r  r  r  r  r  r  z=<>)r   r*   *   r   r*   )
r1   rc   r   isnativerF   r  r  r   rK  NotImplementedError)r   
int_dtypesr  orderr   r  ri   s          r8   test_integer_byteorderz0TestConvertPrimitiveTypes.test_integer_byteorder  s    E
 		1B 1xx
%"*=#T#A#Y/ 1Fzz** hhtn"}}$++-???#]]+>? 1"$((4.C1 111		11 1s    C	Cc                 N   g d}d}t         j                  j                  dd|      dk  }g }g }|D ]  }t         j                  j                  dd|      }t        j                  ||      }|j                  |       |j                  d      }	t         j                  |	|<   |j                  |	        t        j                  t        t        ||            |	      }
t        j                  j                  ||      }|j                         }t        j                   ||
       y )
Nr  r  r   r  r  r   rm   r  r   )r1   r3   r  rF   rc   r  rG  rN   r/   r0   r  r  rH   r   rJ   rS   rT   )r   r  r  r  r  r  rb   rt   ri   rV   r  rZ   r[   s                r8   test_integer_with_nullsz1TestConvertPrimitiveTypes.test_integer_with_nulls  s     F

II%%a*%=A	 		+DYY&&q#J&?F((6	2CMM#}}T*H"$&&HY  *		+ <<S]%C D(24 $$VZ8"
fh/rk   c                     t        j                  dd      }t        j                         }t        j                  ||      }t        j                  |j                  d            }|j                  |      sJ y )Nr  r   r   r}  r   )r1   r2   rF   r   rc   rG  rK   )r   ri   target_typer[   rV   s        r8    test_array_from_pandas_type_castz:TestConvertPrimitiveTypes.test_array_from_pandas_type_cast  sV    ii'*ggi#K088CJJv./}}X&&&rk   c                 J   d}t         j                  j                  d       t        j                  dt         j                  j                  |      dkD  i      }t        j                  dt        j                               }t        j                  |g      }t        ||       y )Nr  r   boolsr  )r1   r3   seedr/   r0   r4   rF   r   r  r;   r]   )r   r  rU   r   r;   s        r8   test_boolean_no_nullsz/TestConvertPrimitiveTypes.test_boolean_no_nulls  sl    

		q\\7BIIOOJ$?!$CDE"((*-E7#F;rk   c                    d}t         j                  j                  d       t         j                  j                  dd|      dk  }t         j                  j                  dd|      dk  }t	        j
                  ||      }|j                  t              }d ||<   t	        j                  dt	        j                               }t	        j                  |g      }t        j                  d|i      }t        j                  j                  |gdg      }	|	j                  j                  |      sJ |	j!                         }
t#        j$                  |
|       y )	Nr  r   r  r  r   r   r  r$  )r1   r3   r%  r  rF   rc   rG  r@   r   r  r;   r/   r0   rH   r   rK   rJ   rS   rT   )r   r  rm   rt   ri   rV   r   r;   r  rZ   r[   s              r8   test_boolean_nullsz,TestConvertPrimitiveTypes.test_boolean_nulls  s   

		qyy  BZ 81<""1bz":Q>hhvD)==("((*-E7#<<( 34$$cUWI6||""6***"
fh/rk   c                     t        j                  g ddz        }t        j                  g ddz        }t        ||t        j                                y )NTTFTTr*   r   r   r   r   r   r  )r/   rd   rv   rF   r   r  s      r8   test_boolean_to_intz-TestConvertPrimitiveTypes.test_boolean_to_int  s;    II59:99_q01q8"((*Erk   c                 0   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        y # 1 sw Y   y xY w)Nr*  r*   r   r+  zExpected integer, got boolmatchr  )	r/   rd   r@   r   rK  rF   ArrowTypeErrorrv   r   )r   rf   rV   expected_msgs       r8   test_boolean_objects_to_intz5TestConvertPrimitiveTypes.test_boolean_objects_to_int  so    II59H99_q013]]2,,LA 	J"1xbhhjI	J 	J 	Js   "!BBc                     t        j                  g ddz        }t        j                  g ddz        }t        ||t        j                                y )N)TTFNTr*   )r   r   r  Nr   r  )r/   rd   rv   rF   r!   r  s      r8   test_boolean_nulls_to_floatz5TestConvertPrimitiveTypes.test_boolean_nulls_to_float  s<    II59:997!;<q8"**,Grk   c                 v    t        j                  t        j                  dd      ddg      }t	        |       y )N)r   r*   r"   r   r   r   r   )r/   r0   r1   onesr]   r   s     r8   test_boolean_multiple_columnsz7TestConvertPrimitiveTypes.test_boolean_multiple_columns  s)    \\"''&7#sL#rk   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        |||       y )Nr   g      @r   r   floatsrV   rW   )r1   rc   r!   r@   r/   r0   
to_numericrF   r   r;   r]   r   ri   rU   rV   r   r;   s         r8   test_float_object_nullsz1TestConvertPrimitiveTypes.test_float_object_nulls  s    hhc2::c?3a7vF\\8S/*<<2==+= >?2::<0E7#X06	8rk   c           	      F   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|      }|j                  |      sJ t        j                  d|i      }t	        j                   t	        j"                  d|      g      }t        j$                  j'                  ||d      }|d   j)                  d      j                  |      rJ  y )	Nr   r   r}  )Nr   r*   N	has_nullsFr;   r<   r   )r/   rd   r1   rN   rF   r   r   r   r   r   r   r   r   rc   rK   r0   r;   r   rH   rI   chunk)r   rf   typestyr[   rV   rU   r;   s           r8   test_float_with_null_as_integerz9TestConvertPrimitiveTypes.test_float_with_null_as_integer  s   IIrvvr2rvv./BHHJ
BHHJRYY["))+ryy{D 		7BXXab)Fxx 2<H==***{A./BYYb 9:;FXX))"V9> * @F!9??1%,,X666		7rk   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        |||       y )Nr   r   r   r   intsr:  )r1   rc   r   r@   r/   r0   r;  rF   r   r;   r]   r<  s         r8   test_int_object_nullsz/TestConvertPrimitiveTypes.test_int_object_nulls
  s    hha!-1@\\63-(<<s); <=,E7#X06	8rk   c                    t        j                  g ddz  t              }t        j                  d|i      }t        j                  dt        j                               }t        j                  |g      }t        ||       y )N)FNTr  r   r$  r  )
r1   rc   r@   r/   r0   rF   r   r  r;   r]   )r   ri   rU   r   r;   s        r8   test_boolean_object_nullsz3TestConvertPrimitiveTypes.test_boolean_object_nulls  sZ    hh*S0?\\7C.)"((*-E7#F;rk   c                     t        j                  d gt              fd} |t        j                                 |t        j
                                y )Nr   c                     t        j                  |       }|j                  | k(  sJ |d   j                         J y )Nr}  r   )rF   rc   r`   r  )r  a2ri   s     r8   _check_typezJTestConvertPrimitiveTypes.test_all_nulls_cast_numeric.<locals>._check_type  s9    #A&B77a<<a5;;=(((rk   )r1   rc   r@   rF   r   r!   )r   rM  ri   s     @r8   test_all_nulls_cast_numericz5TestConvertPrimitiveTypes.test_all_nulls_cast_numeric  s8    hhvV,	)
 	BHHJBJJL!rk   c                    t        j                  dt         j                  gt         j                        }t	        j                  |t	        j                               }|j                         \  }}t        |t              sJ |dk(  sJ t        |t              sJ t        j                  |      sJ t	        j                  |t	        j                         d      }|j                         \  }}t        |t              sJ |dk(  sJ |J y )Nr   r   r}  Tr`   rI   )	r1   rc   rN   r  rF   r  r   floatr  )r   ri   r   r7   ys        r8   test_half_floats_from_numpyz5TestConvertPrimitiveTypes.test_half_floats_from_numpy%  s    hhRVV}BJJ7HHSrzz|,{{}1!U###Cxx!U###xx{{HHSrzz|>{{}1!U###Cxxyyrk   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r(  r,  r2  r4  r7  r=  rD  rG  rI  rN  rS  r?  rk   r8   r  r    sy    <"0<5F
(<26"10:'<0.FJH$
87"8<	"rk   r  r   r  c                 |   d}t         j                  j                  dd|      dk  }t         j                  j                  dd||       }t        j                  ||      }|j                         r|j                  d      }d ||<   n|}|j                  d	
      }t         j                  j                  ||       y Nr  r   r  r  r   r  r  OTinteger_object_nulls)
r1   r3   r  rF   rc   anyrG  rJ   testingassert_equal)r   r  r  rt   rc   rV   r[   s          r8   &test_array_integer_object_nulls_optionr\  5  s     J		!!!Rj!9A=IYYq#JeDFHHV),E}}==%"__$_7FJJFH-rk   c                    d}t         j                  j                  dd|      dk  }t         j                  j                  dd||       }t        j                  ||      }|j                         r|j                  d      }d ||<   n|}t        j                  | |i      }t        j                  j                  |g| g      }|j                  d	
      }t        j                  ||       y rU  )r1   r3   r  rF   rc   rY  rG  r/   r0   rH   r   rJ   rS   rT   )r   r  r  rt   rc   rV   rZ   r[   s           r8   &test_table_integer_object_nulls_optionr^  J  s     J		!!!Rj!9A=IYYq#JeDFHHV),E}}==%"||UH-.HHH  %5'2E__$_7F&(+rk   c                   8   e Zd ZdZd Zd Zej                  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                  j                  dd	g dg      d        Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zej                  j                  d ej8                          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                  j                  d ej8                          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                  j                  d, ej8                          ej:                         g      d-        Z,d. Z-ej                  j]                  e/d	uxr,  e0d/       e0e/jb                        cxk  xr  e0d0      k  nc d12      d3        Z2ej                  j                  dg d      d4        Z3ej                  j                  dg d      d5        Z4d6 Z5y	)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        ||       y )N
datetime64)2007-07-13T01:23:34.1234567892006-01-13T12:34:56.4325397842010-08-13T05:46:57.437699912r'   r   r5  r  	r/   r0   r1   rc   rF   r   r  r;   r]   r   rU   r   r;   s       r8   #test_timestamps_notimezone_no_nullsz@TestConvertDateTimeLikeTypes.test_timestamps_notimezone_no_nullsg  f    \\"(( $1 '	(
  r||D'9:E7#"	
rk   c                     t        j                  dt        j                  g dd      i      }t	        j
                  dt	        j                  d            }t	        j                  |g      }t        ||       y )Nrb  )rc  Nre  r'   r   r5  r  rf  rg  s       r8    test_timestamps_notimezone_nullsz=TestConvertDateTimeLikeTypes.test_timestamps_notimezone_nullsv  ri  rk   r3  )rf   msr4  r5  c           	         t        t        j                        t        d      k  r|dk7  rt        j                  d       t        j
                  dt        j                  g dd| d      i      }|d   j                  j                  d	      |d<   t        |       t        |d          t        j
                  dt        j                  g d
d| d      i      }|d   j                  j                  d	      |d<   t        |       y )Nr7  r5  z0pandas < 2.0 only supports nanosecond datetime64rb  )2007-07-13T01:23:34.1232006-01-13T12:34:56.4322010-08-13T05:46:57.437r=  r>  r   
US/Easternrc  Nrd  re  )r   r/   r@  r   skipr0   r1   rc   r  r  r]   rj   )r   r3  rU   s      r8   test_timestamps_with_timezonez:TestConvertDateTimeLikeTypes.test_timestamps_with_timezone  s    2>>"WW%55$$,KKJK\\"(( $+ $D6+	-
  l+..::<H<#< 01 \\"(( $1
 $D6+-
  l+..::<H<#rk   c                    t        d      D cg c]#  }t        j                         t        |      z   % }}t	        j
                  dt	        j                  |t              i      }t        j                  j                  |      }t        |d   j                  d      t        j                        sJ |j                         }t	        j
                  dt	        j                  |d      i      }t        j                   ||       y c c}w )Nr  )daysr   r   r   r&   )r5   r   todayr   r/   r0   rd   r@   rF   rH   rI   r   rA  TimestampArrayrJ   rS   rT   )r   r7   
date_arrayrU   rZ   r[   expected_dfs          r8   test_python_datetimez1TestConvertDateTimeLikeTypes.test_python_datetime  s    DI"INqhnn&)::N
N\\		*F;
  $$R(%(..+R->->???" ll		*4DE$
  	k62 Os   (Dc                 T   t        j                  d      }|j                  |j                  d      |j	                  d      g}t        j                  d      t        j                  d      t        t        d            g}t        ||      D ]  \  }}|j                  t        dddddd	            g}t        j                  d
|i      }t        t        j                        t        d      k\  r)t        j                  d
t        dddddd	|      gi      }nd }t        ||        y )Npytzrq  r   r  )minutesr   r     -   r   3.0.0tzinfo)rV   )r   importorskiputcr   FixedOffsetzoneinfor	   r   r  localizer   r/   r0   r   r@  r]   )	r   r}  timezones_pytztimezones_zoneinfor   tz_zoneinfort   rU   df_expecteds	            r8   %test_python_datetime_with_pytz_tzinfozBTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_tzinfo  s	   ""6*((DMM,$?AQAQRSATUe$l+Yq)*
  #>3EF 		>OBkk(4Ar2r"BCDFz623Br~~&''*:: ll(4Ar2r+"V!WX ##B=		>rk   N)deadlinec           	          t        |      dv rt        j                  d       t        dddddd|      g}t	        j
                  d	|i      }t        |d
       y )N)zbuild/etc/localtimeFactoryz Localtime timezone not supportedr   r   r  r  r  r  r   FrD   )r,   r   rs  r   r/   r0   r]   )r   r   rt   rU   s       r8   'test_python_datetime_with_pytz_timezonezDTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_timezone  sT     r788KK:;4Ar2r"=>\\:v./6rk   c           	      ,   ddl m} t        dddddd|j                        g}t        j                  d	|i|
      }t        |d       d} |t        |            }t        dddddd|      g}t        j                  d	|i|
      }t        t        j                        t        d      k  rVt        j                  d      }|j                  |dz        }t        dddddd|      g}t        j                  d	|i|
      }	nd }	t        ||	d       y )Nr   )r   r   r   r  r  r  r  r   r   Tr   )hoursr  r}  <   r   )r   r   r  r/   r0   r]   r   r   r@  r   r  r  )
r   r   rt   rU   r  tz_timezoner}  tz_pytz
values_expdf_exps
             r8   )test_python_datetime_with_timezone_tzinfozFTestConvertDateTimeLikeTypes.test_python_datetime_with_timezone_tzinfo  s    %4Ar2r(,,GH\\:v.f=48yu564Ar2r+FG\\:v.f=2>>"WW%55&&v.D&&urz2G"4Ar2r'JKJ\\:z":*MFFVDIrk   c                     G d dt               } |dddddd      g}t        j                  dt        j                  |t              i      }t
        j                  j                  |      }t        |d   j                  d      t
        j                        sJ |j                         }t        j                  dt        j                  |d      i      }t        j                  |d         |d<   t        j                  ||       y )	Nc                       e Zd ZdZy)NTestConvertDateTimeLikeTypes.test_python_datetime_subclass.<locals>.MyDatetimer  N)r  r  r  
nanosecondr?  rk   r8   
MyDatetimer    s    Jrk   r    r   r   r   r   r&   )r   r/   r0   rd   r@   rF   rH   rI   r   rA  rx  rJ   to_datetimerS   rT   )r   r  ry  rU   rZ   r[   rz  s          r8   test_python_datetime_subclassz:TestConvertDateTimeLikeTypes.test_python_datetime_subclass  s    	 	 !q!Q156
\\:ryy6'JKL$$R(%(..+R->->???"
 ll:5EFGI #%..Z1H"IJ
k62rk   c           
          G d dt               } |ddd      g}t        j                  dt        j                  |t              i      }t
        j                  j                  |      }t        |d   j                  d      t
        j                        sJ |j                         }t        j                  dt        j                  t        ddd      gt              i      }t        j                  ||       y )Nc                       e Zd Zy)FTestConvertDateTimeLikeTypes.test_python_date_subclass.<locals>.MyDateNr  r  r  r?  rk   r8   MyDater    s    rk   r  r  r   r   r   r   )r   r/   r0   rd   r@   rF   rH   rI   r   rA  Date32ArrayrJ   r1   rc   rS   rT   )r   r  ry  rU   rZ   r[   rz  s          r8   test_python_date_subclassz6TestConvertDateTimeLikeTypes.test_python_date_subclass  s    	T 	 T1a()
\\6299Zv#FGH$$R(%(..+R^^<<<"llRXXtD!Q/0?@
 	k62rk   c                 >   t        j                  t        ddd      d g      }t        j                  |g      }|j	                         }t         j
                  j                  |t        j                               }|j                  |j                  d            sJ y )N  r  r  r}  date32)
rF   rc   r   chunked_arrayrJ   ArrayrI   r  rK   rx  )r   ri   r   rf   arr2s        r8   test_datetime64_to_date32z6TestConvertDateTimeLikeTypes.test_datetime64_to_date32  su    hhT2r*D12cU#KKMxx##ABIIK#8{{388H-...rk   rm   )TFFTFFc                    |rt        j                  |      }t        j                  g d      }t        j
                  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                               }|j                  |      sJ y )	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r`   rm   r   r   r  r  r  rm   r`   )
r1   rc   r/   r  rF   r  rI   date64r   rK   )r   rm   rf   ri   r   rV   s         r8   test_pandas_datetime_to_date64z;TestConvertDateTimeLikeTypes.test_pandas_datetime_to_date64  s    
 88D>DNN 
  hh""1299;T"Bxxq"q"q"q"q"q"
  88Dt"))+>zz(###rk   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 ]  }|j                  |      }|j                  t              }	|j                  |	j                  k(  sJ t        j                  ||	       |j                  d|      }|j                  |j                  k(  sJ t        j                  ||        y )Nr  r       r*   r  )
2000-01-01Nz
1970-01-01z
2040-02-26datetime64[D]r   r7  r'   coerce_temporal_nanosecondsFdate_as_objectr  )r   r1   rc   r   r/   r@  rF   r  rJ   rG  r@   r   ry   rz   )
r   coerce_to_nsexpected_dtyper   expected_daysrV   objectsobjr[   expected_objs
             r8   test_array_types_date_as_objectz<TestConvertDateTimeLikeTypes.test_array_types_date_as_object;  s;    T1a T1a T1b!#  "07FH 2>>"WW%55-N88 +2@B 88D>##TF+-  		5C]]|]LF(//7L<<<#5#5555""6<8]]%?K # MF<<8>>111""684		5rk   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                  j                  |d	      }|j                  d|
      }|j                         }t        j                  |j                  |      |d       t        j                  ||d       y )Nr   r  r   r  r  r*   r  Fr   r  Tr  )
r/   r0   r   rF   rH   rI   rJ   rS   rT   rG  )r   r  expected_typerU   rZ   df_datetime	df_objects          r8   !test_table_convert_date_as_objectz>TestConvertDateTimeLikeTypes.test_table_convert_date_as_object[  s     \\T$1%$1%$2&() * $$R$>ooUBN & POO%	
bii6*.	0
b)>rk   
arrow_typerf   rl  r4  r5  r  c                    t        ddd      t        ddd      g}t        j                  |      }t	        j
                  |      j                  |      }|j                  dd      }d }t        |d      r|j                  d}t	        j                  d	|      j                         }t        j                  ||j                  |             y )
Nr  r     TFr  r  r   r  r5  )r   r   r/   rd   rF   rc   rx  rJ   hasattrr   r  to_pandas_dtyperS   re   rG  )r   r  r   rV   ri   r[   expected_tzr  s           r8   &test_array_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_array_coerce_temporal_nanosecondso  s     T1a (4A"6799T?hhtn!!*-(,U  D:t$)BKT;7GGI
vx}'EFrk   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|      }|j                  dd      }d }t        |d	      r|j                  d
}t        j                  d|      j                         }t        j                  ||j!                  |             y )Nr  r   r  r   r~  TFr  r   r  r5  )r   r   rF   r;   r   r/   r0   rZ   rc   rJ   r  r   r  r  rS   rT   rG  )	r   r  r   r;   rz  rZ   	result_dfr  r  s	            r8   &test_table_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_table_coerce_temporal_nanoseconds  s     T1a (4A"67BHHVZ89:llFD>2"((4.)&9OO(,U $ D	:t$)BKT;7GGI
i););M)JKrk   c                    t        j                  dt        ddd      d t        ddd      t        ddd      gi      }t        j                  j                  |d	      }t        j                  dt        j                               }t        j                  |g|j                  j                  
      }|j                  j                  |      sJ |j                         }t        j                  ||       y )Nr   r  r   r  r  r*   r  Fr   r&  )r/   r0   r   rF   rH   rI   r   r  r;   r&  rK   rJ   rS   rT   )r   rU   rZ   r   rW   r[   s         r8   test_date_inferz,TestConvertDateTimeLikeTypes.test_date_infer  s    \\T$1%$1%$2&() *
 $$R$>- ))UGell6K6KL||""?333"
fb)rk   c                 Z   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	      }|j	                  |      sJ y )
Nr  r   r   r  r   TFr  r  )r1   rc   r   rF   rK   )r   ri   rm   r[   rV   s        r8   test_date_maskz+TestConvertDateTimeLikeTypes.test_date_mask  s    hhT1a($tQ*:;,.e}#BHHTN388T4a#34OL88H$7v&&&rk   c           
      d   t        j                  t        ddd      d t        ddd      t        ddd      gt              }t        j                  g dd      }|j	                  d      d	z  }t        j                  g d
      }t        j                         }t        j                         }t        j                  ||      }t        j                  ||      }t        j                  |||      }	t        j                  |||      }
|j                  |	      sJ |j                  |
      sJ ddg}t
        j                  j                  ||g|      }t        j                  g dd      }t        j                  j                  |d<   |j	                  d      }t        j                  ||d|      }|j                  d      }t!        j"                  ||       |j                         }|j	                  d      }t        j                  ||d|      }t!        j"                  ||       y )Nr  r   r   r   r   )kC  rO  lC  mC  r   r    \&)FTFFr}  r  r  r  )z
2017-04-03
2017-04-04r  z
2017-04-05r  r   r%   )r  r  r   F)r  r@   )r1   rc   r   r@   rG  rF   r  r  rK   rH   r   r/   NaTr  r0   rJ   rS   rT   )r   ri   arr_i4arr_i8rm   t32t64a32a64a32_expecteda64_expectedcolnamesrZ   	ex_valuesex_datetime64msexpected_pandastable_pandastable_pandas_objects
ex_objectsexpected_pandas_objectss                       r8   test_date_objects_typedz4TestConvertDateTimeLikeTypes.test_date_objects_typed  s   hhq!q!q!	 &,	- 37Cw'(2xx34iikiikhhs%hhs%xxT<xxT<zz,'''zz,''' h'$$c3Z:XX -$35	 vv||	! $**+;<,,/2A(C/79 e<
lO<$0%%h/
"$,,*:D0F7?#A 	25	7rk   c                    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      }|j                  |      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 y )NNAr  r   r   Tr  r*   )getattrr/   r1   rc   r   r  r@   rF   rK   rq   r`   null)r   pd_NArt   values_with_noner[   rV   s         r8   test_pandas_null_valuesz4TestConvertDateTimeLikeTypes.test_pandas_null_values  s    D$'8D!Q/?vN88XdAq%94$F*02&d388,$?}}X&&&  A%%% xxd388BGGIEEExxT2772779DDDrk   c                    t        j                         }t        j                         }t        j                  g dd      }|j                  d      dz  }t        j                  ||      }t        j                  ||      }t        ddd	      }|d
   j                         |k(  sJ |d
   j                         |k(  sJ y )N)r  r  r  r   r   r   r  r}  r  r   r   r   )rF   r  r  r1   rc   rG  r   r  )r   t1t2ri   r  a1rL  rV   s           r8   test_dates_from_integersz5TestConvertDateTimeLikeTypes.test_dates_from_integers  s    YY[YY[hh,G<zz'"X-XXc#XXd$a#!u{{}(((!u{{}(((rk   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
   j                         |d
   k(  sJ |d   j                         |d   k(  sJ |d   j                         J t        j                  d|i      }t        j                  j                  |      }|d
   j                  |      sJ t        j                  |D cg c]  }t        |       c}d	      }t        j                  |t        j                  d            }	|	d
   j                         |d
   k(  sJ t        j                  |dz  t        j                  d            }
|
d
   j                         |d
   k(  sJ t        j                  |dz  j                  d      t        j                  d            }|d
   j                         |d
   j!                  d      k(  sJ t        j                  |dz  j                  d      t        j                  d            }|d
   j                         |d
   j!                  d
      k(  sJ y c c}w )Nr   r*   r   L  r   r   r   r4  r   r   timesr   r}    r5  r  rl  microsecond@B rf   )r   rF   time64r1   rc   r@   r`   r  r/   r0   rG   rI   rK   _pytime_to_microsrG  time32rM   )r   pytimesr  aobjsparrrU   rW  vri   r  rL  a3a4s                r8   test_pytime_from_pandasz4TestConvertDateTimeLikeTypes.test_pytime_from_pandas  s6   1a&1a&( YYt_D6)8xxyyBAw}}'!*,,,Aw}}'!*,,,Aw}}&&& \\7E*+**2.Qxt$$$ hhg>)!,>$& XXc		$0!u{{}
***XXcDjryy7!u{{}
***XXsTz))$/99T?,!u{{}
 2 2t 2 DDDDXXsW},,T299S>+!u{{}
 2 2q 2 AAAA ?s   !J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 cg c]  }|j                  d	
       c}d gz         }t        j                  |d d D cg c]  }|j                  d
       c}d gz         }t        j                  |D cg c]  }t	        |       c}d      }t        j                  |D cg c]  }t	        |       c}d      }t        j                  g dt
              }t        j                  ||t        j                  d            }	t        j                  |d	z  |t        j                  d            }
t        j                  |d	z  j                  d      |t        j                  d            }t        j                  |dz  j                  d      |t        j                  d            }g d}t        j                  j                  |	|
||g|      }|	|f|
|f||f||ffD ]4  \  }}|j                         }|j                  |k(  j                         r4J  |j                         }t        j                   ||||d|      }t#        j$                  ||       y c c}w c c}w c c}w c c}w )Nr   r*   r   r   r   r   r   r   r  r  r   r   FFTr4  r  r5  r  rl  r  rf   )
time64[us]z
time64[ns]
time32[ms]z	time32[s]r   )r   r1   rc   rM   r  r"   rF   r  rG  r  rG   r   rJ   rt   allr/   r0   rS   rT   )r   r	  rV   r7   expected_ms
expected_sr  ri   r  r  rL  r  r  r   rW  expected_valuesresult_pandasrU   rz  s                      r8   test_arrow_time_to_pandasz6TestConvertDateTimeLikeTypes.test_arrow_time_to_pandas   s   1a&1a&1a=" 88GBQK4&01hh)0! 6$% !"		d	 ;  6 $v & ' XX(/5#$  !yyQy7 5#f% &
 hhg>)!,>$&hhg>)!,>$& HH1>	XXc			$@XXcDjy99T?, XXsTz))$/i99T?,XXsW},,T299S>+ H**BB+;UC&((^&((^&(+%6&(*%5%7 	C C  MMOM!((O;@@BBB	C __ll(2:2=1;$= ,1	2 	b+.Q 65 ?>s   J5J:J?:K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        |       y )
Nrr  r'   r   )z2007-07-13T01:23:34.123456Nz2006-01-13T12:34:56.432539z2010-08-13T05:46:57.437699r&   )rn  Nro  rp  r%   )z2007-07-13T01:23:34Nz2006-01-13T12:34:56z2010-08-13T05:46:57r$   r1   rc   r|   )r   datetime64_nsdatetime64_usdatetime64_msdatetime64_ss        r8   test_numpy_datetime64_columnsz:TestConvertDateTimeLikeTypes.test_numpy_datetime64_columnsP  s     "-
 #$ 	+=9 "*
 #$ 	+=9 "'
 #$ 	+=9xx !#
 "# 	+<8rk   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            }|j                         }t        j                  ||       t        j                  |g      }|j                         }t        j                  ||       y )Nr7  z0pandas >= 2.0 supports non-nanosecond datetime64r   rl  )r3  )r   r/   r@  r   rs  rF   rc   r  rd   r  rJ   rS   re   r  )r   ri   rV   rf   s       r8   &test_timestamp_to_pandas_coerces_to_nszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_coerces_to_nsq  s    2>>"gg&66KKJKhhy",,t"4599R^^IDABMMO
q(+u%MMO
q(+rk   c           	         dD ]U  }dD ]L  }t        j                  t        ddd      gt        j                  ||            }t        j                  d|i      }d}t        j                  t        |      5  |j                  d	       d d d        t        j                  t        |      5  |j                  d	       d d d        t        j                  t        |      5  |j                  d      j                  d	       d d d        |j                  d
d       |j                  d
d       |j                  d      j                  d
d       O X y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w)Nrf   rl  r4  )Nr9  r   r  r   z'would result in out of bounds timestampr.  Tr  F)rQ  r  )
rF   rc   r   r  rZ   r   rK  rL  rJ   column)r   r3  r   ri   rZ   msgs         r8   &test_timestamp_to_pandas_out_of_boundszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_out_of_bounds~  sW    & 	BD0 BhhAq 12BLL"4MN#s,?]]:S9 DMMdMCD ]]:S9 FOOOEF ]]:S9 RLL%//D/QR 5dKUMS!++D , B'B	BD DF FR Rs$   8E.E)$"E5E&)E25E>c           	      &   t        j                  dt        j                  g t        j                  d            i      }|j	                         }t        j                  dt        j                  g d      i      }t        j                  ||       y )Nr   r4  r}  r&   r   )
rF   rZ   r  r  rJ   r/   r0   rd   rS   rT   )r   rZ   r[   rV   s       r8   &test_timestamp_to_pandas_empty_chunkedzCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_empty_chunked  sf    #r//d9KLMN"<<bii:J&K LM
fh/rk   r   c                 P    t        j                  g dd      }t        ||       y )N)
2007-07-13Nz
2006-01-15z
2010-08-19r  r   r}  r  )r   r   datetime64_ds      r8   test_numpy_datetime64_day_unitz;TestConvertDateTimeLikeTypes.test_numpy_datetime64_day_unit  s&    xx !
 "# 	+<eDrk   c           	         t        j                  g d      }t        j                  t	        ddd      t	        ddd      t	        ddd      g      }t
        j                  j                  ||      }t        j                  d t	        ddd      d g      }t
        j                  j                  |      j                  |      sJ y )NTFTi  r   i  i  r  )	r1   rc   r/   rd   r   rF   r  rI   rK   )r   mr   r[   rV   s        r8   %test_array_from_pandas_date_with_maskzBTestConvertDateTimeLikeTypes.test_array_from_pandas_date_with_mask  s    HH()yyq!q!q!
  %%d%399dDq!$4d;<xx##H-44V<<<rk   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       y )Nr   z2012-11-11 00:00:00+01:00Fr  )r/   r0   	Timestampr  r]   r   s     r8   test_fixed_offset_timezonez7TestConvertDateTimeLikeTypes.test_fixed_offset_timezone  s?    
 \\89
  	 6rk   c           	      N   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        ||       y )	Nr7  r5  timedelta64)r   l     qa    @B1timedelta64[r>  r   r  r   r/   r@  r0   r1   rc   rF   r   durationr;   r]   r   r3  rU   r   r;   s        r8   test_timedeltas_no_nullsz5TestConvertDateTimeLikeTypes.test_timedeltas_no_nulls  s    2>>"WW%55D\\288$E,8a*@B
  D(9:E7#"	
rk   c           	      N   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        ||       y )	Nr7  r5  r7  )r   Nr8  r9  r>  r   r  r:  r<  s        r8   test_timedeltas_nullsz2TestConvertDateTimeLikeTypes.test_timedeltas_nulls  s    2>>"WW%55D\\288$<,8a*@B
  D(9:E7#"	
rk   c           
          ddl m} t        j                  dd  |dddd      gi      }t	        j
                  dt	        j                         fg      }t        ||       y )	Nr   )
DateOffsetdate_offseti  r   iX  )rv  monthsmicrosecondsnanosecondsr  )pandas.tseries.offsetsrA  r/   r0   rF   r;   month_day_nano_intervalr]   )r   rA  rU   r;   s       r8   test_month_day_nano_intervalz9TestConvertDateTimeLikeTypes.test_month_day_nano_interval  sb    5\\D&DA3689
 
 ]B,F,F,HIJK"	$rk   )6r  r  r  r  rh  rk  r   r  r  rt  r{  r  hgivenstnonepast	timezonessettingsr  r  r  r  r  r  r  r  rF   r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r'  r)  r-  r1  skipifr1   r   r@  r5  r=  r?  rH  r?  rk   r8   r`  r`  b  s   

 [[V%<=$ >$83&>* QWWWRWWY'(QZZ7  )7J.323"/ [[V0& $	$2 [[:7689595: [[97689?9?" [[\'biik9299;S8I*bll40,",,t2D*bll40,",,sE2J*bll47dE9R*bll47	9:
G:
G [[\'biik9299;S8I*bll40,",,t2D*bll40,",,sE2J*bll47dE9R*bll47	9:L:L* '/7bE)#BJ./`9B,B60 [[Wyryy{IBIIK&@AE BE= [[
$ 	078,NN1 0%h/04  67	67 [[V%<=
 >
 [[V%<=
 >

$rk   r`  c                   l   e Zd Zd Zd Zej                  j                  d        Zej                  j                  ej                  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                  j                  d ej0                          ej2                          ej4                         g      d        Zej                  j                  d ej0                          ej2                          ej4                         g      d        Zd Zd Zd Zy)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        |||       y )Nr  r   rf     mañanastrings)r   Nrf  rT  Nr:  )r1   rN   r/   r0   rF   r   r   r  large_stringr  r;   r]   )r   repeatsrt   rU   r   r;   r  rV   s           r8   test_pandas_unicodez.TestConvertStringLikeTypes.test_pandas_unicode  s    ui8\\9fw&678!,!>!>!@BOObiik
 E7#9	<<I,? @AXvNrk   c                 H   ddd t        d      dt        j                  g}t        j                  d|i      }t
        j                  j                  |      }|d   j                  t        j                         k(  sJ g d}t        j                  d|i      }t        ||       y )Nqux   foo   barzrU  r   )   quxr[  Nr\  r]  N)	bytearrayr1   rN   r/   r0   rF   rH   rI   r`   binaryr]   )r   rt   rU   rZ   values2rV   s         r8   test_bytes_to_binaryz/TestConvertStringLikeTypes.test_bytes_to_binary  s    y'95"&&I\\9f-.$$R(Qx}}		+++?<<G 45H-rk   c                 X   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                  j                  |      }|d   j                  dk(  sJ y )	N   x krU  r  r7   r*   r   )	r/   r0   rF   rc   r   ChunkedArray
num_chunksrH   rI   )r   v1v2rU   ri   rZ   s         r8   test_bytes_exceed_2gbz0TestConvertStringLikeTypes.test_bytes_exceed_2gb  s    II \\tbyB4'3%"*4
  hhr)}%#r///~~"""$$R(Qx""a'''rk   charr7   rc  c                    |dz  }|dz  }t        j                  d|ggdz  |ggz   dggz   i      }t        j                  |d   d      }|j	                  d       t        |t        j                        sJ |j                  d	k(  sJ t        |j                  d
            dk(  sJ t        |j                  d            dk(  sJ y )Nrd  re  rU  r  rc  Tr  fullr*   r      r   )
r/   r0   rF   rc   validater   rf  rg  r   rA  )r   rk  rh  ri  rU   ri   s         r8   +test_auto_chunking_pandas_series_of_stringszFTestConvertStringLikeTypes.test_auto_chunking_pandas_series_of_strings#  s     II\\v{rdV+vh6
  hhr)}$7$#r///~~"""399Q< B&&&399Q< A%%%rk   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                  ||      }|j                  d   j                  |d   j                  k(  sJ |j                  d   j                  |d   j                  k(  sJ |j                         }t        j                  ||       y )Nr[     bar   heyrU  r   r~  r   )r^  r/   r0   rF   r;   r   r_  rH   rI   r`   rb   rJ   rS   rT   )r   rt   rU   r;   rZ   r[   s         r8   test_fixed_size_bytesz0TestConvertStringLikeTypes.test_fixed_size_bytes4  s    $	& 14vF\\9f-.BHHY		!=>?$$R$7||A##vay~~555||A##vay~~555"
fb)rk   c                 f   g d}t        j                  d|i      }t        j                  t        j                  dt        j
                  d            g      }t        j                  t        j                        5  t        j                  j                  ||       d d d        y # 1 sw Y   y xY w)N)r[  Ns   baNNrt  rU  r   r~  )r/   r0   rF   r;   r   r_  r   rK  ArrowInvalidrH   rI   )r   rt   rU   r;   s       r8   5test_fixed_size_bytes_does_not_accept_varying_lengthszPTestConvertStringLikeTypes.test_fixed_size_bytes_does_not_accept_varying_lengths>  sz    :\\9f-.BHHY		!=>?]]2??+ 	4HH  F 3	4 	4 	4s   <"B''B0c                 p    t        j                  g d      }t        |t        j                                y )N   123rk   r\  Nrg   )r/   rd   rj   rF   r_  r   rf   s     r8   test_variable_size_bytesz3TestConvertStringLikeTypes.test_variable_size_bytesE  s!    II/05rk   c                     t        j                  t        d      t        d      t        d      d g      }t        |t	        j
                                t        |t	        j
                                y )Nr{  rk   r\  r|  rh   )r/   rd   r^  rj   rF   r_  r}  s     r8   test_binary_from_bytearrayz5TestConvertStringLikeTypes.test_binary_from_bytearrayI  sM    IIy()C.)D/  	 5BIIK@rk   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y Nrz  r|  r   r~  )r/   rd   rj   rF   large_binaryr0   r]   r;   r   rf   rU   s      r8   test_large_binaryz,TestConvertStringLikeTypes.test_large_binaryQ  sY    II/0):;\\3(#ryy3(9":!;<	>rk   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y N)123r+   r   Nr|  r   r~  )r/   rd   rj   rF   rV  r0   r]   r;   r  s      r8   test_large_stringz,TestConvertStringLikeTypes.test_large_stringX  sY    II,-):;\\3(#ryy3(9":!;<	>rk   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y r  )r/   rd   rj   rF   binary_viewr0   r]   r;   r  s      r8   test_binary_viewz+TestConvertStringLikeTypes.test_binary_view_  sY    II/0)9:\\3(#ryy3(8"9!:;	=rk   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y r  )r/   rd   rj   rF   string_viewr0   r]   r;   r  s      r8   test_string_viewz+TestConvertStringLikeTypes.test_string_viewf  sY    II,-)9:\\3(#ryy3(8"9!:;	=rk   c                 "   g d}t        j                  d|i      }t        j                  dt        j                               }t        j
                  |g      }t        j                  j                  ||      }|j                  d      }t        j                  d|i      }t        j                  ||d       |j                  d      }t        j                  dt        j                  |      i      }	t        j                  ||	d       y )Nr+   r+   r+   r+   r+   rU  r~  Fstrings_to_categoricalTr  )r/   r0   rF   r   r  r;   rH   rI   rJ   rS   rT   Categorical)
r   rt   rU   r   r;   rZ   result1	expected1r   	expected2s
             r8   test_table_empty_strz/TestConvertStringLikeTypes.test_table_empty_strm  s    %\\9f-.BIIK0E7#$$R$7///?LL)V!45	
gydC///>LL)R^^F-C!DE	
gydCrk   c                    g d}t        j                  d|i      }t        j                  dt        j                               }t        j
                  |g      }t        j                  j                  ||      }t        j                  d|i      }t        j                  dt        j                  |      i      }|j                  dg      }t        j                  ||d       |j                  g       }	t        j                  |	|d       |j                  d      }
t        j                  |
|d       |j                  t                     }t        j                  ||d       y )Nr  rU  r~  
categoriesTr  )rU  )r/   r0   rF   r   r  r;   rH   rI   r  rJ   rS   rT   tuple)r   rt   rU   r   r;   rZ   expected_strexpected_catr  r   result3result4s               r8   test_selective_categoricalsz6TestConvertStringLikeTypes.test_selective_categoricals|  s   %\\9f-.BIIK0E7#$$R$7||Y$78||Yv0F$GH//i[/9
g|F//R/0
g|F//\/:
g|F//UW/5
g|Frk   c                     t        j                  g t        j                               }t         j                  j	                  |gdg      }|j                  dg       y )Nr}  r\   r  r   r  )rF   rc   r   rH   r   rJ   )r   rc   rZ   s      r8   &test_to_pandas_categorical_zero_lengthzATestConvertStringLikeTypes.test_to_pandas_categorical_zero_length  sE    "((*-$$UGE7$CE7+rk   c                     t        j                  g d      j                         }t         j                  j	                  |gdg      }|j                  dg      }|j                         j                  |      sJ y )N)r   r   r   rf  r\   r  r  )rF   rc   dictionary_encoderH   r   rJ   rK   )r   rc   rZ   r[   s       r8   ,test_to_pandas_categories_already_dictionaryzGTestConvertStringLikeTypes.test_to_pandas_categories_already_dictionary  sd    56HHJ$$UGE7$CUG4 ''///rk   string_typec                 X   g d}t        j                  d|i      }t        j                  d|      }t        j                  |g      }t        j
                  j                  ||      }|j                  d      }t        j                  dt        j                  |      i      }t        j                  ||d       t        j                  t        j                        5  |j                  dd       d d d        |d   j                  d      }t        j                  t        j                  |      d      }t        j                  ||       t        j                  t        j                        5  |d   j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	N)r   r   r   r   r   rU  r~  Tr  r  r  zero_copy_onlyra   )r/   r0   rF   r   r;   rH   rI   rJ   r  rS   rT   r   rK  rw  rd   re   	r   r  rt   rU   r   r;   rZ   r[   rV   s	            r8   (test_table_str_to_categorical_without_nazCTestConvertStringLikeTypes.test_table_str_to_categorical_without_na  sX    +\\9f-.K0E7#$$R$7=<<BNN6,B CD
fhDA]]2??+ 	1OO4+/  1	1
 y!++4+H99R^^F3)D
vx0]]2??+ 	<)&&d6: ' <	< 	<	1 	1	< 	<s    F4F F F)c                 x   d ddt         j                  g}t        j                  d|i      }t	        j
                  d|      }t	        j                  |g      }t        j                  j                  ||      }|j                  d      }t        j                  dt        j                  |      i      }t        j                  ||d       t        j                  t        j                        5  |j                  dd       d d d        |d   j                  d      }t        j                   t        j                  |      d	      }t        j"                  ||       t        j                  t        j                        5  |d   j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r   rU  r~  Tr  r  r  ra   )r1   rN   r/   r0   rF   r   r;   rH   rI   rJ   r  rS   rT   r   rK  rw  rd   re   r  s	            r8   %test_table_str_to_categorical_with_naz@TestConvertStringLikeTypes.test_table_str_to_categorical_with_na  se    S"&&)\\9f-.K0E7#$$R$7=<<BNN6,B CD
fhDA]]2??+ 	1OO4+/  1	1
 y!++4+H99R^^F3)D
vx0]]2??+ 	<)&&d6: ' <	< 	<	1 	1	< 	<s   0F$F0$F-0F9c                     t        j                  t        j                  dgt              t        j                               }|j
                  t        j                         k(  sJ y )Nrc  r   )rF   rc   r1   r@   r  r`   )r   	converteds     r8   test_array_of_bytes_to_stringsz9TestConvertStringLikeTypes.test_array_of_bytes_to_strings  s=    HHRXXtfF;RYY[I	~~,,,rk   c                    t        j                  t        j                  j                  d      5  t        j
                  t        j
                  dgt              t        j                                d d d        y # 1 sw Y   y xY w)Nzwas not a utf8 stringr.  s   r   )	r   rK  rF   librw  rc   r1   r@   r  r   s    r8   'test_array_of_bytes_to_strings_bad_datazBTestConvertStringLikeTypes.test_array_of_bytes_to_strings_bad_data  sZ    ]]##-/ 	I HHRXX{m6:BIIKH	I 	I 	Is   AA<<Bc                 4   t        j                  g dd      }t        j                  |t        j                  d            }t        j                  t	        |      t        j                  d            }|j                  |      sJ t        j                  g d      }t        j                  |t        j                  d      |      }t        j                  g dt        j                  d            }|j                  |      sJ t        j                  t        j                  j                  d	
      5  t        j                  g dd      }t        j                  |t        j                  d             d d d        t        j                  t        j                  j                  d
      5  t        j                  g dd      }t        j                  |t        j                  d             d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)r[  rs     bazz|S3r   r   r}  FTFr  )r[  Nr  z)Got bytestring of length 3 \(expected 4\)r.  r   z*Got bytestring of length 12 \(expected 3\)z|U3)
r1   rc   rF   r_  r)  rK   r   rK  r  rw  )r   ri   r  rV   rm   s        r8   ,test_numpy_string_array_to_fixed_size_binaryzGTestConvertStringLikeTypes.test_numpy_string_array_to_fixed_size_binary  sk   hh/u=HHSryy|4	88DIBIIaL9)))xx,-HHSryy|$?	8821F)))]]266..!MO 	-((35ACHHSryy|,	-
 ]]##CE 	- ((35ACHHSryy|,		- 	-	- 	-
	- 	-s   :AH5AHHHN) r  r  r  rX  ra  r   r  large_memoryrj  r  rq  ru  rx  r~  r  r  r  r  r  r  r  r  r  rF   r  rV  r  r  r  r  r  r  r?  rk   r8   rR  rR    sG   O	. [[( (  [[[[Vc4[1& 2 &*46A>>==DG$,0 [[			_R__%68HI<<0 [[			_R__%68HI<<2-I-rk   rR  c                   z   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                  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                  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                  j                  dej                  ej                  ej                  ej*                  g      d        Zy)TestConvertDecimalTypesz,
    Conversion test for decimal types.
    z	-1234.123z1234.439z-129934.123331z129534.123731r  z-314292388910493.12343437128)rt   r  r   r   r  )idr  r   r  r  r  r  c                 2   t        j                  d|i      }t        j                  j	                  |d      }t        j
                  d|      }t        j                  |g|j                  j                        }|j                  j                  |      sJ y )Nr  Fr   r  )	r/   r0   rF   rH   rI   r   r;   r&  rK   )r   rt   r  rV   rZ   r   rW   s          r8   test_decimal_from_pandasz0TestConvertDecimalTypes.test_decimal_from_pandas	  sv     <<V 45$$Xe$D]3 ))UGell6K6KL||""?333rk   rt   c                     t        j                  d|i      }t        j                  j	                  |      }|j                         }t        j                  ||       y )Nr  )r/   r0   rF   rH   rI   rJ   rS   rT   )r   rt   rV   r  rU   s        r8   test_decimal_to_pandasz.TestConvertDecimalTypes.test_decimal_to_pandas  sI     <<V 45HH((2	  "
b(+rk   c                    t        j                  d      g}t        j                  dd      }t	        j
                  t        j                        5  t        j                  ||       d d d        t        j                  d      g}t        j                  dd      }t	        j
                  t        j                        5  t        j                  ||       d d d        y # 1 sw Y   yxY w# 1 sw Y   y xY w)Nz1.234r  r*   r}  z1.2345r   )r   r   rF   r  r   rK  rw  rc   )r   data1type1data2type2s        r8   "test_decimal_fails_with_truncationz:TestConvertDecimalTypes.test_decimal_fails_with_truncation"  s    )*b!$]]2??+ 	(HHU'	( *+b!$]]2??+ 	(HHU'	( 	(	( 	(
	( 	(s   C ?C, C),C5c                    t        j                  d      t        j                  d      g}t        j                  |      }t	        j
                  |      }|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}|j                         |k(  sJ y )	Nz0.01z0.001r   r  r   r}  z0.01000z0.00100)	r   r   r/   rd   rF   rc   r  r`   r  )r   r   seriesrc   rV   s        r8   &test_decimal_with_different_precisionsz>TestConvertDecimalTypes.test_decimal_with_different_precisions-  s    OOF#OOG$
 4  D(((zzR]]1a0000BMM"a$89OOI.	0JK H,,,rk   c                    t        j                  t        j                  d      d g      }t	        |t        j                  dd             t        j                  d gdz        }t	        |t        j                  dd             y )Nr  r  r   r|  r*   r/   rd   r   r   rj   rF   r  r   r  s     r8   $test_decimal_with_None_explicit_typez<TestConvertDecimalTypes.test_decimal_with_None_explicit_type;  s^    GOOF3T:;bmmB.BC D6A:&bmmB.BCrk   c                     t        j                  t        j                  d      d g      }t	        |t        j                  dd             y )Nr  r   r*   r  r  r  s     r8   !test_decimal_with_None_infer_typez9TestConvertDecimalTypes.test_decimal_with_None_infer_typeC  s3    GOOF3T:;q!9LMrk   c                     ddidt        j                  d      id}t        j                  j	                  |      }t        |       y )Nr   r   z0.0rF  )r   r   r/   r0   	from_dictr]   )r   tmpdirr   rU   s       r8   test_strided_objectsz,TestConvertDecimalTypes.test_strided_objectsG  sA     SW__U+,
 \\##D)#rk   r  c                     t        j                  d      d g}t        j                  | |dd            }|j	                         }t        j                  |      }t        j                  ||       y )Nr  r   r*   r}  )	r   r   rF   rc   rJ   r/   rd   rS   re   )r   r  r   ri   r[   rV   s         r8   test_decimal_array_to_pandasz4TestConvertDecimalTypes.test_decimal_array_to_pandasR  sU     '.hht#a),99T?
vx0rk   N)r  r  r  r  r   r   r  r  r  r   r  r  paramrF   r  r  r  r  r  r  r  r  r  r?  rk   r8   r  r    s    	$
#I
 	()(I
 	5667J
 [[8Ya 3DYb! 4EZr2!6<H; 
4
4 [[XY;/Y;/ZL1( 
,
,	(-DN	$ [[U



	% 11rk   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j4                  j7                  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j4                  jL                  d%        Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-ej4                  j7                  d,ej\                  ej^                  g      d-        Z0ej4                  j7                  d,ej\                  ej^                  g      d.        Z1ej4                  j7                  d,ej\                  ej^                  g      d/        Z2ej4                  j7                  d,ej\                  ej^                  g      d0        Z3ej4                  j7                  d,ej\                  ej^                  g      d1        Z4y)2TestConvertListTypesz,
    Conversion tests for list<> types.
    c                 z   t               \  }}t        |||       t        j                  j	                  ||d      }|j                  |j                  j                        }|j                  j                  |      sJ |j                  D ]-  }|j                  |      }t        ||   |j                         / y Nr;   rW   Fr@  r}  )r   r]   rF   rH   rI   with_metadatar;   r&  rK   rL   r   rv   r`   r   rU   r;   rZ   rW   r%  r   s          r8   test_column_of_arraysz*TestConvertListTypes.test_column_of_arrayse  s    *,
F66J$$Ru$M !..u||/D/DE||""?333jj 	@FLL(E"2f:EJJ?	@rk   c           	      D   d}t        j                  t        j                  d|      t        j                  d|      d t        j                  d|      gt              }t	        j
                  t	        j                               }t	        j                  ||      }|d   j                         t        t        d            k(  sJ |d   j                         t        t        d            k(  sJ |d   j                         J |d	   j                         dgk(  sJ y )
Nr  r  r   r   r   r}  r   r*   r   )
r1   rc   r2   r@   rF   r  r   r  r)  r5   )r   r   ri   rg   r  s        r8   test_column_of_arrays_to_pyz0TestConvertListTypes.test_column_of_arrays_to_pyr  s    hhIIb&IIau%IIau%	

  #xx%(Aw}}$uRy/111Aw}}$uQx.000Aw}}&&&Aw}}1#%%%rk   c                    t        j                  ddgdggt        j                  t        j                                     }t         j                  j                  |gdg      }|j                         }t        j                  dddgdggi      }t        j                  ||       |d   j                         }t        j                  t        j                  |      |d   d       y )NTFr}  r
  r   r   rn   )rF   rc   r  r  rH   r   rJ   r/   r0   rS   rT   re   rd   )r   rc   rZ   rU   rz  rf   s         r8   test_column_of_boolean_listz0TestConvertListTypes.test_column_of_boolean_list  s    4-$0rxx
7KL$$eWVH$=__llFdE]TF,C#DE
b+.!H 
ryy|RZUKrk   c           	      8   t        j                  t        j                  d      t        j                  d      gt        j                  d      ggt        j                  t        j
                  dd                  }t         j                  j                  |gdg      }|j                         }t        j                  dt        j                  d      t        j                  d      gt        j                  d      ggi      }t        j                  ||       y )	Nr   r]  z3.3r*   r   r}  r
  r   )rF   rc   r   r   r  r  rH   r   rJ   r/   r0   rS   rT   )r   rc   rZ   rU   rz  s        r8   test_column_of_decimal_listz0TestConvertListTypes.test_column_of_decimal_list  s    7??3/1EF"??5124 hhr}}Q':;= $$eWVH$=__llws+W__S-ABu-.0 12 	b+.rk   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|      }|j                  |      sJ t        j                  t              5  t        j                  |j                   |       d d d         y # 1 sw Y   xY w)Nr   f0r   r}  )r/   rd   r1   rc   rN   r@   rF   r  r   
large_liststructr   rK   r   rK  	TypeErrorrt   )r   rf   rC  r[   rV   s        r8   +test_nested_types_from_ndarray_null_entriesz@TestConvertListTypes.test_nested_types_from_ndarray_null_entries  s    IIbhh/v>?88BHHJ'==,99bhhtW5679 	,B XXab)Fxxt26H==***y) ,+, ,	,, ,s   #"EE	c                 z   t               \  }}t        |||       t        j                  j	                  ||d      }|j                  |j                  j                        }|j                  j                  |      sJ |j                  D ]-  }|j                  |      }t        ||   |j                         / y r  )r   r]   rF   rH   rI   r  r;   r&  rK   rL   r   rv   r`   r  s          r8   test_column_of_listsz)TestConvertListTypes.test_column_of_lists  s    )+
F66J$$Ru$M !..u||/D/DE||""?333jj 	@FLL(E"2f:EJJ?	@rk   c           	      :   g g dg dg dgg}t        j                  |D cg c]  }t        j                  |t               c}      }t        j                  |      }t        j                  |j                               }t        j                  ||       y c c}w )Nr|  )r   r   r   r   r*   r   )	r/   rd   r1   rc   rQ  rF   rJ   rS   re   )r   	num_listsrf   r  ri   r[   s         r8    test_column_of_lists_first_emptyz5TestConvertListTypes.test_column_of_lists_first_empty  sp    L"qc:	iHBHHQe4HIhhv3==?+
vv. Is   "B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                  j                  |d d |      }t
        j                  j                  |dd  |      }t        j                  ||g      }|j                         }t        j                  ||       y )Nlistsr   r*   r   r   r   r   r   r   	   r   r~  )r/   r0   r1   rc   r@   rF   r;   r   r  r   rH   rI   concat_tablesrJ   rS   rT   )r   rU   r;   r  r  rZ   r[   s          r8   test_column_of_lists_chunkedz1TestConvertListTypes.test_column_of_lists_chunked  s    \\RXXAAAAA 	
 	 HHWbhhrxxz23
  XX!!"Ra&!8XX!!"QR&!8  "b*"
fb)rk   c           	         t        j                  dt        j                  g t              i      }t        j                  t        j                  dt        j                  t        j                                     g      }t
        j                  j                  ||      }|j                         }t        j                  ||       y )Nr  r   r~  )r/   r0   r1   rc   r@   rF   r;   r   r  r   rH   rI   rJ   rS   rT   )r   rU   r;   rZ   r[   s        r8   "test_empty_column_of_lists_chunkedz7TestConvertListTypes.test_empty_column_of_lists_chunked  s    \\RXXb/
  HHWbhhrxxz23
  $$R$7"
fb)rk   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                  j                  |gdg      }t         j                  j                  |gdg      }t        j                  ||g      }|j                         }t        j                  d||z   i      }	t        j                  ||	       y )Nr   r   r*   r   r   r   r   r   r  r  r                 r   r        r   r   )
rF   rc   rH   r   r  rJ   r/   r0   rS   rT   )
r   r  r  r  rL  r  r  concatenatedr[   rV   s
             r8   test_column_of_lists_chunked2z2TestConvertListTypes.test_column_of_lists_chunked2  s    Q!Q!Q!Q"bbB8b"X/Q"b"XXe_XXe_XX!!2$se!4XX!!2$se!4''R1'')<<eem 45
fh/rk   c                     t               \  }}t        j                  |gdz  d      }|d   j                  d d d   }|j                  d   dk7  sJ t        |       y )Nr   T)ignore_indexr   r   r   r   )r   r/   concatrt   stridesrv   )r   rU   r;   ri   s       r8   test_column_of_lists_stridedz1TestConvertListTypes.test_column_of_lists_strided  sZ    )+
FYYtaxd3k  1%{{1~"""s#rk   c           	      <   t        j                  d d gd gt              }t        j                  |      }t        j                  t	        |            }|j                  |      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      }|j                  |      sJ y )Nr   )	r1   rc   r@   rF   r)  rK   r`   r  r  )r   r   ri   rV   r  s        r8   test_nested_lists_all_nonez/TestConvertListTypes.test_nested_lists_all_none 	  s    xx$t,F;hhtn88DJ'zz(###xx288BGGI....$tTl((D$<v>@%' hhuo88T4$d|DEzz(###rk   c                 ,   t        j                  g g g g      }t        j                  |      }t        j                  t	        |            }|j                  |      sJ |j                  t        j                  t        j                               k(  sJ y N)	r/   rd   rF   rc   r)  rK   r`   r  r  r   r   ri   rV   s       r8   test_nested_lists_all_emptyz0TestConvertListTypes.test_nested_lists_all_empty	  sh    yy"b"&hhtn88DJ'zz(###xx288BGGI....rk   c                 ,   t        j                  g dgg      }t        j                  |      }t        j                  t	        |            }|j                  |      sJ |j                  t        j                  t        j                               k(  sJ y )Nr   )	r/   rd   rF   rc   r)  rK   r`   r  r  r  s       r8   test_nested_list_first_emptyz1TestConvertListTypes.test_nested_list_first_empty	  sh    yy"se%hhtn88DJ'zz(###xx288BIIK0000rk   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                                     }|j                  |      sJ |j                  |      sJ t        j                  t        j                  g dd      d g      }t	        j                  |      }t	        j                  g dd gt	        j                  t	        j                                     }|j                  |      sJ y )Nr   r  r   r}  r  )
r/   rd   r1   rc   rF   rt   r  r   rK   r    )r   r   r[   r   rV   data3r  	expected3s           r8   test_nested_smaller_intsz-TestConvertListTypes.test_nested_smaller_ints	  s     yy"((9D94@A$((4;;'88Y-BHHRWWY4GH}}X&&&~~h'''		288IT:DAB((5/HHi.RXXbjjl5KL	~~i(((rk   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        ||       y )Nnan_intsr   r*   r   rF  r   strsr   r   dnested_strsr  )r   r1   rN   r/   r0   rF   r;   r   r  r   r  r]   r   r   rU   rW   s       r8   test_infer_listsz%TestConvertListTypes.test_infer_lists.	  s   2661+1v./q!fq!f%&tSkC:./tSkC:6=>	
  \\$))HHZ"((*!56HHVRXXbhhj12HHVRXXbiik23HH]BHHRXXbiik-B$CD	%
  	 ODrk   c                    t        j                  t        j                         d      }t        j                  t        j                               }g dd g dg dg}t        j                  ||      }t        j                  ||      }|j	                         }|j	                         }t        ||      D ]!  \  }}	||	J t        j                  ||	       # y )Nr   )	list_size)r   r   r*   r   r   )r   r  r  r  r}  )rF   r  r   rc   rJ   r  ry   rz   )
r   fixed_tyvariable_tyr   	fixed_arrvariable_arrr[   rV   leftrights
             r8   test_fixed_size_listz)TestConvertListTypes.test_fixed_size_list@	  s    88BHHJ!4hhrxxz*dL.AHHT1	xx;7$$&))+vx0 	0KD%|}$}""4/	0rk   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        ||       y )NrF  r   r   r   r*   r   r  )r   r1   rc   r   r/   r0   rF   r;   r   r  r]   r  s       r8   test_infer_numpy_arrayz+TestConvertListTypes.test_infer_numpy_arrayQ	  s    !Qrxx0!Qrxx0 
  \\$))HHVRXXbhhj12%
  	 ODrk   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
                  j                  ||gdd	g      }t         j                  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                  |j                               }t        j                         5  t        j                  ddt               t        j                   ||       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r  eff1r  )r   r   r   r   )r*  r  r*   r   rA   rB   )rF   rc   r   r  r  StructArrayr   	ListArrayr/   rd   rJ   rO   rP   rQ   rR   rS   re   )r   rF  rU  structsr   rV   r  s          r8   test_to_list_of_structs_pandasz3TestConvertListTypes.test_to_list_of_structs_pandas_	  s    xx	288:.((S#Jc
S#J?88BIIK02..,,dG_tTlK||''	7;99c3Z()c3Z(c3Z(*
  4>>+, $$& 	5##H.M$68""684	5 	5 	5s   2E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                                                 }|j                         }t        j                  |      }t        j                         5  t        j                  ddt                t#        j$                  ||       d d d        y # 1 sw Y   y xY w)N1.25.0.dev0r7  $Regression in pandas with numpy 1.25r   r   r   rf  r   r  ru  rZ  Nquuxr(  quzr)  grA   rB   )r   r1   r@  r/   r   rs  rF   rc   r  map_utf8rJ   rd   rO   rP   rQ   rR   rS   re   )r   r   ri   r  rV   s        r8   test_to_list_of_maps_pandasz0TestConvertListTypes.test_to_list_of_maps_pandasu	  s&   R^^$(>>(77+;; KK>?sCj!EC:#678bk=6D#;*?@ECQT:CVBWX
 hhtRXXbggbggi"'')9L&MNO99T? $$& 	5##H.M$68""684	5 	5 	5s   ,2E''E0c           
         t        t        j                        t        d      k\  r:t        t        j                        t        d      k  rt	        j
                  d       t        j                  g d      j                  dd      }t        j                  dgdgdd	gd
dgg dddggt        j                  t        j                                     j                  dd      }t        j                  j                  g d||      }t        j                  j                  g d|      }|j                         }t        j                  ddd	gfdd
dgfggdg fdggg      }|j                  dd      j                         }t        j                  dg fdggg      }t!        j"                         5  t!        j$                  ddt&               t)        j*                  ||       t)        j*                  ||       ddd       y# 1 sw Y   yxY w)zL
        A slightly more rigorous test for chunk/slice combinations
        r0  r7  r1  )rA   r   rf  ru  rZ  r3  rA   r   r   rA   r   r   r   r  Nr(  r*   r   r*   r   r   r   rf  ru  r2  rB   )r   r1   r@  r/   r   rs  rF   rc   slicer  r  MapArrayr   r,  rJ   rd   rO   rP   rQ   rR   rS   re   )	r   r  itemsmapri   r  rV   series_slicedexpected_sliceds	            r8   "test_to_list_of_maps_pandas_slicedz7TestConvertListTypes.test_to_list_of_maps_pandas_sliced	  s   
 R^^$(>>(77+;; KK>?xx 2 3385A; 	Z(c3Z#sRc{SHHRYY[!
 %1+ 	 kk%%iu=ll&&y#699sCj!EC:#678bk=)*
 
 		!Q113))bk=)*%
  $$& 	C##H.M$68""684""=/B		C 	C 	Cs   ,AG==Hzt,data,expectedr   r*   r   Naaabbr   c                 d   t        j                  g d      }t        j                  |      }t        j
                  j                  ||t	        j                   |                   }t        j
                  j                  |t	        j                   |                   j                  |      sJ y )Nr/  r  r}  )	r1   rc   r/   rd   rF   r  rI   r  rK   )r   r  r   rV   r0  rf   r[   s          r8   ,test_array_from_pandas_typed_array_with_maskzATestConvertListTypes.test_array_from_pandas_typed_array_with_mask	  s    $ HH()IIdO%%aabhhqsm%Dxx##H)+!# $ 88>vG 	G Grk   c                 @   t        j                  dt              }|j                  g        t	        j
                  t        j                  g d      |d      }t        j                  j                  |      }|j                         }t        j                  ||       y )N)r   r   )r   r]  3rF  )r1   emptyr@   fillr/   r0   rc   rF   rH   rI   rJ   rS   rT   )r   empty_list_arrayrU   r  r[   s        r8   test_empty_list_roundtripz.TestConvertListTypes.test_empty_list_roundtrip	  sq    88D7b!\\ 9 02 3hh""2&
fb)rk   c                 8   t               \  }}|D ]  }||j                     j                  }t        j                  t        |      |j                        }t        j                  |      }|j                  |j                  k(  sJ |j                  |      rJ  y )Nr}  )r   rb   rt   rF   rc   r)  r`   rK   )r   rU   r;   r   ri   rV   r[   s          r8   test_array_from_nested_arraysz2TestConvertListTypes.test_array_from_nested_arrays	  s}    *,
F 	+EUZZ.''CxxS	

;HXXc]F;;%**,,,==***	+rk   c           	         t        j                  g ddggd gt        j                  t        j                  t        j                                           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        y # 1 sw Y   y xY w)
Nr   r   r}  rA   z&Creating an ndarray from ragged nestedrB   r   Frn   )rF   rc   r  r   rJ   rO   rP   rQ   _np_VisibleDeprecationWarningrR   rS   re   r/   rd   r@   r}  s     r8   test_nested_large_listz+TestConvertListTypes.test_nested_large_list	  s    XX	A3'.==rxxz)BCEik 	
 $$& 	###H$L$AC ##H.M$68""299y1#.5VD!#	# 	# 	#s   9A/C11C:c           
      &   t         j                  t         j                  fD ]  }t        j                  ddgd dgg g |t        j                                     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                                     j                         }t        j                  |t        j                  ddgd dgg g      d	        y )
NrJ  rC  ccr}  s   aas   bbs   ccFrn   )rF   r  r  rc   r  rJ   rS   re   r/   rd   rV  )r   list_type_factoryrf   s      r8   test_large_binary_listz+TestConvertListTypes.test_large_binary_list	  s    "$((BMM!: 	#D$<vr:01BCE)+  ""299uendUGR@A!# D$<vr:01BCE)+  ""299tTlD4&"=>!#	#rk   c                    t        j                  g d      j                         }t         j                  j	                  g d|      }t        j                  |j                               }t        j                  |j                         |       |j                  g d      }d |d<   t        j                  |j                         |       y )N)r   rf  Nr   )r   r   r   r   r   )r   r   Nr   r*   )rF   rc   r  r,  r   r/   rd   r  rS   re   rJ   take)r   childri   rV   s       r8   test_list_of_dictionaryz,TestConvertListTypes.test_list_of_dictionary	  s    45GGIll&&> 99S]]_-
s}}9 hh'
s}}9rk   c                    d}t         j                  j                  t        t	        j
                  |dfd            t        |      d      }t        j                  j                  |      }|j                  d       |d   }|j                  d	k(  sJ t        |j                  d            d
k(  sJ t        |j                  d            dk(  sJ y )Ni    i   r   r   rF  Trm  r   r*   i r   )r/   r0   r  r)  r1   zerosr5   rF   rH   rI   rp  rg  r   rA  )r   nrU   rZ   column_as        r8   #test_auto_chunking_on_list_overflowz8TestConvertListTypes.test_auto_chunking_on_list_overflow
  s     \\##bhh5z9:q%
  $$R(D!8""a'''8>>!$%2228>>!$%***rk   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        ||       y )Nr\  r      br*      cr      dr      er   )   fr      gr   r>  r~  )r/   r0   rF   r;   r6  r_  r   r]   )r   r   rU   r;   s       r8   test_map_array_roundtripz-TestConvertListTypes.test_map_array_roundtrip
  si    I&1
 \\5$-(UBGGBIIK$DEFG62rk   c                 v   ddgdgg ddgg}|D cg c]  }|D cg c]  \  }}||dz  f c}} }}}}t        j                  |t        j                  t        j                         t        j                                     }t        j                  |t        j                  t        j                         t        j                                     }t        j
                  ||g      }t        j                  ||z         }	|j                         }
t        j                  |
|	d	       y c c}}w c c}}}w )
Nr_  r`  rb  rd  rj  r*   r}  Frn   )rF   rc   r6  r_  r   r  r/   rd   rJ   rS   re   )r   r  rowkr  r  arr1r  ri   rV   actuals              r8   test_map_array_chunkedz+TestConvertListTypes.test_map_array_chunked&
  s    Y'2 :???#-A1a!e*-??xxBGGBIIK$DExxBGGBIIK$DEd|,99UU]+
vxUC .?s   
D4D.D4.D4c                    ddgd g ddgg}|D cg c]*  }|$|D cg c]  \  }}||t        |      nd f c}}nd , }}}}t        j                  |      }t        j                  |t        j
                  t        j                         t        j                                     }|j                         }t        j                  ||d       y c c}}w c c}}}w )Nr_  r`  )re  rg  )ri  Nrj  r}  Frn   )rQ  r/   rd   rF   rc   r6  r_  r   rJ   rS   re   )r   r   rn  ro  r  rV   ri   rq  s           r8   test_map_array_with_nullsz.TestConvertListTypes.test_map_array_with_nulls5
  s    I&4 =AB B58s KNN$!QaQ]q=N,01 B B99X&hht"''"))+rxxz"BC
vxUC O Bs   CCCCc           	         t        j                  g d      }t        j                  g d      j                         }t        j                  t        t	        t        |                        }t         j                  j                  |||      }t        j                  g dddgg      }|j                         }t        j                  ||d       y )Nr   r   r   )r   r   r   r   r  ))r   r   )r   r   )r*   r   )r   r   )r   r  Frn   )rF   rc   r  r)  r5   r   r<  r   r/   rd   rJ   rS   re   )r   offsetsr=  r  ri   rV   rq  s          r8   !test_map_array_dictionary_encodedz6TestConvertListTypes.test_map_array_dictionary_encodedD
  s    ((9%23EEGxxU3u:./0kk%%gtU; 99+h-ABD 
vxUCrk   c           	         t        j                  ddgg dd dd gddgg      }t        j                  |j                  dd      |j                  dd      g      }|j	                         }t        j                  d	d
gg dd dt
        j                  ggd      }t        ||      D ]%  \  }}|||k(  rJ t        j                  ||       ' t        j                  d	d
ddddt
        j                  gg      }t        j                  |d   j                  |       |j                  dd      j	                         }t        j                  g dd dt
        j                  ggd      }t        ||      D ]%  \  }}|||k(  rJ t        j                  ||       ' t        j                  ddddt
        j                  gg      }t        j                  |d   j                  |       y )Nr   r*   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r@   r   r   r   r   )rF   rc   r  r;  to_numpyr1   rN   r  ry   rz   base)	r   ri   chunked_arrr  rV   r"  r#  expected_basenp_arr_sliceds	            r8   test_list_no_duplicate_basez0TestConvertListTypes.test_list_no_duplicate_baseQ
  s   hhA	4!TQFCD&&		!Q1a'IJ%%'88b"X|TL*19;vx0 	4KD%}u}$}&&tU3		4 2r2r2r266"B!CDvay~~}=#))!Q/88:88Yq"&&k:(K}h7 	4KD%}u}$}&&tU3		4 2r2r266":!;<}Q/44mDrk   c                    t         j                  j                  t        j                  g d      t        j                  g d      t        j                  g d            }|j	                  d      }t        j                  ddgd d	t
        j                  ggd
      }t        ||      D ]%  \  }}|||k(  rJ t        j                  ||       ' y )Nr   r*   r   r   )r   r*   c   r  r   Nr  )rw  rt   rm   Fr  r   r   r   r@   r   )
rF   r,  r   rc   rz  r1   rN   r  ry   rz   )r   ri   r  rV   r"  r#  s         r8   test_list_values_behind_nullz1TestConvertListTypes.test_list_values_behind_nullo
  s    ll&&HH\*8834./ ' 

 U388b"Xtb"&&\:(Kvx0 	4KD%}u}$}&&tU3		4rk   rY   c                 2   |j                  t        j                  g d      t        j                  g d      t        j                  g d            }|j                         }t	        j
                  ddgddgd	d
gg      }t        j                  ||       y )Nr:  r*   r*   r*   r   r*   r   r   r   r   rw  sizesrt   r   r*   r   r   r   r   r   rF   rc   rJ   r/   rd   rS   re   r   rY   ri   rq  rV   s        r8   .test_list_view_to_pandas_with_in_order_offsetszCTestConvertListTypes.test_list_view_to_pandas_with_in_order_offsets~
  z    HHY'((9%88./   
 99q!fq!fq!f56
vx0rk   c                 2   |j                  t        j                  g d      t        j                  g d      t        j                  g d            }|j                         }t	        j
                  ddgddgd	d
gg      }t        j                  ||       y )N)r*   r   r   r  r  r  r   r   r   r   r   r*   r  r  s        r8   2test_list_view_to_pandas_with_out_of_order_offsetszGTestConvertListTypes.test_list_view_to_pandas_with_out_of_order_offsets
  r  rk   c                 2   |j                  t        j                  g d      t        j                  g d      t        j                  g d            }|j                         }t	        j
                  g dg dg dg      }t        j                  ||       y )Nr   )r   r   r   r  r  r   )r*   r   r   r   )r   r   r   r   r  r  s        r8   1test_list_view_to_pandas_with_overlapping_offsetszFTestConvertListTypes.test_list_view_to_pandas_with_overlapping_offsets
  sn    HHY'((9%88./   
 99lL,GH
vx0rk   c           	      r   |j                  t        j                  g d      t        j                  g d      t        j                  dd g      t        j                  g d            }|j                         }t	        j
                  dt        j                  gg d g      }t        j                  ||       y )N)r   r*   r*   )r*   r   r   r   r  rw  r  rt   rm   )
r   rF   rc   rJ   r/   rd   r1   rN   rS   re   r  s        r8   )test_list_view_to_pandas_with_null_valuesz>TestConvertListTypes.test_list_view_to_pandas_with_null_values
  s    HHY'((9%88QI&./	   
 99q"&&k2t45
vx0rk   c           	         t        j                          t        j                         }|j	                  t        j
                  g d      t        j
                  g d      t        j
                  g d            }|j	                  t        j
                  g d      t        j
                  g d      t        j
                  g d      t        j
                  g d      	      }t        j                  ||g      }|j                         }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 y )N)r*   r   r   r  r   r  )r   r   r   )r   r   r   )r   r   r   Nr  r  r   r   r*   r   )r   r   r   r   r   )gccollectrF   total_allocated_bytesr   rc   r  rJ   r/   rd   r1   rN   rS   re   )	r   rY   bytes_startrp  r  ri   rq  rV   	bytes_ends	            r8   (test_list_view_to_pandas_multiple_chunksz=TestConvertListTypes.test_list_view_to_pandas_multiple_chunks
  s%   


..0  HHY'((9%88L) ! 

   HHY'((9%88O,./	 ! 
 d|,99q!fq!fq!fi!QQUVW
vx0,,.	K'''rk   )5r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r$  r&  r.  r8  rA  r   r  r  rF   r   r  r  rE  rK  rM  rP  rT  rX  r  r]  rl  rr  rt  rx  r  r  ListViewArrayLargeListViewArrayr  r  r  r  r  r?  rk   r8   r  r  `  s   @&"
L
/,@/*2*0$$$/1)E$0"E5,5*%CN [[.HHVaS$A3	
 IIT]SE4(C5$	
 GGD\D64(D64 	
1 "G#"G
*+##: [[+ +	3DDDE<4 [[Wr'7'79N9N&OP
1 Q
1 [[Wr'7'79N9N&OP
1 Q
1 [[Wr'7'79N9N&OP
1 Q
1 [[Wr'7'79N9N&OP1 Q1 [[Wr'7'79N9N&OP( Q(rk   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y)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        |||
       y )Nr  r   r*   rF  r   r   r   r   r  r  )r/   r0   rF   r;   r  r   r]   )r   rU   rW   s      r8   test_pandas_roundtripz,TestConvertStructTypes.test_pandas_roundtrip
  s    \\711%5QQ7G$HIJ))bii#rxxz!2S"((*4E FGH%
  	 OD 	 	Irk   c                 
   t        j                  g dt        j                               }t        j                  g dt        j                               }t        j                  g dt        j                               }t         j
                  j                  |||gg d      }t        j                  d ddddd d	dd
dd dg      }t        j                  |j                               }t        j                  ||       y )N)Nr*   r   r}  )r   Nr   )TFN)rF  r  r$  r   Tr*   Fr   r   )rF   rc   r   r  r  r+  r   r/   rd   rJ   rS   re   )r   rF  r  r$  ri   rV   r  s          r8   test_to_pandasz%TestConvertStructTypes.test_to_pandas
  s    xx288:6xx(ryy{;,288:>nn((4%' 9936u5d3
  3==?+
vx0rk   c                    t        j                          t        j                         }t        j                  dgt        j
                               }t        j                  dgt        j
                               }t        j                  j                  |gdg      }t        j                  j                  |gdg      }t        j                  ||g      }t        j                  ddiddig      }t        j                  |j                               }t        j                  ||       ~~~~~~t        j                         }	|	|k(  sJ y )Nr   r}  r*   rF  )r  r  rF   r  rc   r   r+  r   r  r/   rd   rJ   rS   re   )
r   r  ints1ints2rp  r  ri   rV   r  r  s
             r8   test_to_pandas_multiple_chunksz5TestConvertStructTypes.test_to_pandas_multiple_chunks
  s   


..0!288:.!288:.~~))5'F8<~~))5'F8<d|,99QKQK
 
 3==?+
vx0,,.	K'''rk   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                  ||      }|j                         g k(  sJ t        j                  ddg|      }t	        j                  ||      }|j                         dd	d
ddd
gk(  sJ t	        j                  |t        j                  dd	g      |      }|j                         dd	d
d gk(  sJ t        j                  g       }t	        j
                  g       }t        j                  g |      }t	        j                  ||      }|j                         g k(  sJ t        j                  ddg|      }t	        j                  ||      }|j                         i i gk(  sJ y )Nr7   )y_titlerR  rR  r   r}  )r  T)+   Fr  T)r7   rR  r  Fr  r?  )	r1   r   r   r  rF   r  r   rc   r  r   r  rC  r   ri   s        r8   test_from_numpyz&TestConvertStructTypes.test_from_numpy  s   XXRXX("((35 6YYbhhj1bhhj13 4 xx"%hht"%}}"$$$xx[1<hht"%}}$#7)+%#8#: : 	: : hht"((E4="9C}}$#7">>>> XXb\YYr]xx"%hht"%}}"$$$xxR+hht"%}}2r(***rk   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kD  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                  ||
      }|j                         g k(  sJ t        j                  ddg|	      }t        j                  ||
      }|j                         ddddddddddddgk(  sJ y )Nr7   xxyyrR  zl        r  r   r   r}  ))r   Tr*   r   ))r   Fr   rf  r   T)r  r  r*   r   )r7   rR  r  r   Fr   rf  )r1   r   r   r  r   object_itemsizesysmaxsizerF   r  r   r  rc   r  r  s        r8   test_from_numpy_nestedz-TestConvertStructTypes.test_from_numpy_nested.  s   XXRXXbgg(,bhh'7'9 : ;RXXRZZ(* + {{S[[5%8ra@@@YYbii$	1J13$
1K1M 'N Obhhj1biik24 5
 xx"%hht"%}}"$$$xx!"$+-/ hht"%}}$'ae<%(qu=#? ? 	? ?rk   c                    d}t        j                  dt         j                  fdg      }d|j                  z
  }d|z  }|||j                  z   z  }t        j                  ||      }t         j
                  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	
      }|j                  d	       |j                  dk(  sJ d dfd	}	 |	||       ~t         j
                  j                  |      dk  }
t        j                  |||
d	      }|j                  d	       |j                  dk(  sJ  |	|||
       ~y )Nl        r7   )rR  r@   i      .r   rR  r  TrP  rm  r*   c              3   N   K   | j                         D ]  }|E d {     y 7 wr  )
iterchunks)ri   rA  s     r8   iter_chunked_arrayzHTestConvertStructTypes.test_from_numpy_large.<locals>.iter_chunked_array]  s(     ) !   ! s   %#%c                 Z   t        |       t        |      k(  sJ |d   }|d   }t         	|             D ]Y  \  }}	 |j                         }|	||   r|:J ||   }t        j                  |      r|d   J |d   |k(  sJ |d   ||   k(  sJ [ y # t
        $ r t        d|        w xY w)Nr7   rR  zFailed at index)r   	enumerater  r1   r  	Exceptionprint)
ri   r   rm   xsysir  r  r7   r  s
            r8   checkz;TestConvertStructTypes.test_from_numpy_large.<locals>.checka  s    s8s4y(((cBcB#$6s$;< 3		A'DG y(yqE88A;#$S6>1>#$S6Q;.; vA. ! +Q/s   ABB*)r`   rm   rI   r  )r1   r   r!   r  rZ  r3   random_samplerN   rF   r  r   r_  rc   rp  rg  )r   target_sizer  bsblockr[  r   rC  ri   r  rm   r  s              @r8   test_from_numpy_largez,TestConvertStructTypes.test_from_numpy_largeH  s~    "XXRZZ(/:;R[[ r	B,-xx$II++A.S	S	%'VVS	$s)c/"YYbjjl3biik24 5hht"$7$~~"""	!	( 	c4 yy&&q)C/hht"4TB$~~"""c4rk   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        t        j                  g       }t        j                  t        d      5  t        j                  ||       d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)	Nr7   rR  r  r   zMissing field 'y'r.  r}  zExpected struct array)rF   r  r   r   r  r1   r   rc   r   rK  rL  r  )r   rC  r  r   s       r8   test_from_numpy_bad_inputz0TestConvertStructTypes.test_from_numpy_bad_input  s    YYbhhj1bhhj13 4XXRXXRXX( ) xx"%]]:!46 	$HHT#	$ xx|]]9!8: 	$HHT#	$ 	$		$ 	$	$ 	$s   D>E
>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        ||||       y )Ntuples)r   r*   r   r   r   r*   rF  r   r   r   r   r  )rV   r;   rW   )
r/   r0   rF   r  r   r1   asarrayrv   r;   r]   )r   rU   rz  struct_typeri   rW   s         r8   test_from_tuplesz'TestConvertStructTypes.test_from_tuples  s    \\8ff%567llaa(*:;<> ii#rxxz!2S"((*4E FGjjH&+h/k	C ))h%<$=>_+	-rk   c           	      8   ddg}t        j                  g d      j                         t        j                  g d      j                         g}t         j                  j	                  ||      }t        d |D         }|D cg c]  }t        t        ||             }}t        j                  |      }t        j                  |j                         |       |j                  g d      }d |d<   t        j                  |j                         |       y c c}w )	NrF  r  )  i  r  )r   r   Nr   c              3   <   K   | ]  }|j                           y wr  )r  ).0rW  s     r8   	<genexpr>zCTestConvertStructTypes.test_struct_of_dictionary.<locals>.<genexpr>  s     GUu0Gs   )r   Nr*   r   )rF   rc   r  r+  r   r  r  r/   rd   rS   re   rJ   rV  )r   r   childrenri   rows_as_tuplesrn  rows_as_dictsrV   s           r8   test_struct_of_dictionaryz0TestConvertStructTypes.test_struct_of_dictionary  s     HH_-??AHH12DDFHnn(((? GhGH:HI3c%o.II99]+
s}}9 hh|$
s}}9 Js   DN)r  r  r  r  r  r  r  r  r  r   r  slowr  r  r  r  r  r?  rk   r8   r  r  
  sa    I1"(6+>?4 [[[[5  5n$-":rk   r  c                   X    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y)TestZeroCopyConversionz@
    Tests that zero-copy conversion works with some types.
    c                     t        j                  g d      j                  d      }t        j                  |g d       y )Nr   Tr  rx   )r   r[   s     r8   test_zero_copy_successz-TestZeroCopyConversion.test_zero_copy_success  s.    )$..d.Cvy1rk   c                 h   t         j                  j                  t        j                  ddg      t        j                  dgd            }|j                  d      }t        j                  ddg      }t        j                  t        j                  |      t        j                  |      d       y )	Nr   r   r   r   Tr  Frn   )rF   rR  r   r1   rc   rJ   r/   r  rS   re   rd   )r   ri   r[   rt   s       r8   test_zero_copy_dictionariesz2TestZeroCopyConversion.test_zero_copy_dictionaries  s      ,,HHaVHHaS(

 d3A'
ryy0"))F2C+0	2rk   c                     t        j                  dgd      }t        j                  |      j                  d      }t	        j
                  ||       y )Nr+  r'   r   Tr  r1   rc   rF   rJ   ry   rz   r   ri   r[   s      r8   test_zero_copy_timestampz/TestZeroCopyConversion.test_zero_copy_timestamp  s@    hh~-=>#(((=vs+rk   c                     t        j                  dgd      }t        j                  |      j                  d      }t	        j
                  ||       y )Nr   r)   r   Tr  r  r  s      r8   test_zero_copy_durationz.TestZeroCopyConversion.test_zero_copy_duration  s@    hhs"34#(((=vs+rk   c                     t        j                  t        j                        5  |j	                  d       d d d        y # 1 sw Y   y xY w)NTr  )r   rK  rF   rw  rJ   r   ri   s     r8   check_zero_copy_failurez.TestZeroCopyConversion.check_zero_copy_failure  s5    ]]2??+ 	/MMM.	/ 	/ 	/s   A  A	c                     t        t        j                        t        d      k  r'| j                  t	        j
                  g d             y y )Nr  )r   BC)r   r/   r@  r  rF   rc   r  s    r8   &test_zero_copy_failure_on_object_typesz=TestZeroCopyConversion.test_zero_copy_failure_on_object_types  s4    2>>"WW%55((/)BC 6rk   c                 P    | j                  t        j                  g d             y )N)r   r   Nr  rF   rc   r  s    r8   *test_zero_copy_failure_with_int_when_nullszATestZeroCopyConversion.test_zero_copy_failure_with_int_when_nulls  s    $$RXXl%;<rk   c                 P    | j                  t        j                  g d             y )N)r  r   Nr  r  s    r8   ,test_zero_copy_failure_with_float_when_nullszCTestZeroCopyConversion.test_zero_copy_failure_with_float_when_nulls  s    $$RXX.>%?@rk   c                 P    | j                  t        j                  ddg             y )NTFr  r  s    r8   $test_zero_copy_failure_on_bool_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_bool_types  s    $$RXXtUm%<=rk   c                     t        j                  ddgddggt        j                  t        j                                     }| j	                  |       y )Nr   r*   r   r  r}  )rF   rc   r  r   r  r  s     r8   $test_zero_copy_failure_on_list_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_list_types  s<    hhAA'bhhrxxz.BC$$S)rk   c                 ~    t        j                  dd gd      }| j                  t        j                  |             y )Nr   r'   r   r1   rc   r  rF   r  s     r8   .test_zero_copy_failure_on_timestamp_with_nullszETestZeroCopyConversion.test_zero_copy_failure_on_timestamp_with_nulls  s-    hh4y(89$$RXXc]3rk   c                 ~    t        j                  dd gd      }| j                  t        j                  |             y )Nr   r)   r   r  r  s     r8   -test_zero_copy_failure_on_duration_with_nullszDTestZeroCopyConversion.test_zero_copy_failure_on_duration_with_nulls  s-    hh4y(9:$$RXXc]3rk   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r?  rk   r8   r  r    sE    2
2,
,
/D
=A>*44rk   r  c                  N    t               } t        | d       t        | dd       y )NFr>   Tr?   rX   r9   r]   rU   s    r8   _non_threaded_conversionr    s     		BBE2BEDArk   c                  N    t               } t        | d       t        | dd       y )NTr>   r  r  r  s    r8   _threaded_conversionr    s     		BBD1BD4@rk   c                   8   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d Zej4                  j6                  ej4                  j8                  d               Zd Zd Zd Z d Z!ej4                  jE                  ddg diejF                  fdg diejF                  fdddgiejF                  fdddgiejH                  fdddgiejH                  fdddgiejH                  fg      d        Z%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d& Z,d' Z-d( Z.y))*TestConvertMiscz)
    Miscellaneous conversion tests.
    r   r   r   r   r   r   r   r   r  r    r!   r@   r  c                 L    t        j                  dg di      }t        |       y )Nr   NNNr   r   s     r8   test_all_none_objectsz%TestConvertMisc.test_all_none_objects  s    \\3 234#rk   c                 z    t        j                  dg di      }|d   j                  d      |d<   t        |       y )Nr   r  r!  )r/   r0   rG  r]   r   s     r8   test_all_none_categoryz&TestConvertMisc.test_all_none_category  s4    \\3 234S'..,3#rk   c                    t        j                  ddg      j                  d      }t        j                  |d   |d   |d   g|      }t	        j
                  |d      }|j                  j                  j                  dk(  sJ y )	Nz
2024-01-01z
2024-01-02rq  r   r   )rt   r  Tr  )	r/   r   r  r  rF   rc   r`   
value_typer   )r   catscatri   s       r8   test_categorical_with_timezonez.TestConvertMisc.test_categorical_with_timezone   ss    | <=II,WnnT!Wd1gtAw$?DQhhs-xx""%%555rk   c                    | j                   D ]z  \  }}t        t        j                        t        d      k\  r|t	        j
                         k(  rd}t        j                  g t        j                  |            }t        ||       | y )Nr  r,   r   r}  )

type_pairsr   r/   r@  rF   r  r1   rc   r   rv   )r   	dtype_strpa_typeri   s       r8   test_empty_arraysz!TestConvertMisc.test_empty_arrays)  sf    "&// 	6Iw'77+;;ryy{*!	((2RXXi%89C"3W5	6rk   c                     t                y r  )r  r  s    r8   test_non_threaded_conversionz,TestConvertMisc.test_non_threaded_conversion2  s     "rk   c                     t        j                  d      }	 |j                  t               |j	                          |j                          y # |j	                          |j                          w xY w)Nr*   )mpPoolapplyr  closejoin)r   pools     r8   %test_threaded_conversion_multiprocessz5TestConvertMisc.test_threaded_conversion_multiprocess5  sK     wwqz	JJ+,JJLIIK JJLIIKs   A "A/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        ||           y )Nr   r   rf  rZ  )r   r   r   r   r   r[  rs  r]  r  )rf  rZ  r   Tr  r(  )
cat_stringscat_strings_with_nacat_ints
cat_binarycat_strings_orderedrF  r  rU  strings2strings3)r1   rN   r/   r  r0   r]   rv   )r   rW  rh  ri  v3r  rU   ro  s           r8   test_categoryzTestConvertMisc.test_category@  s    T5%0dFFBFF3 >>"w,7#%>>"w,>CU^$MrG|4..g6#%>>W)>$ L'\G|WW& \\&!# 	.A"6!9-	.rk   c                     d }t        j                  g dddg      t        j                  g dddgd      g}|D ]
  } ||        y )Nc                     t        j                  |       }|j                         }t        j                  t        j                  |      t        j                  |              y r  )rF   rc   rJ   rS   re   r/   rd   )r  ri   r[   s      r8   _checkzBTestConvertMisc.test_category_implicit_from_pandas.<locals>._check\  s;    ((1+C]]_F""299V#4biilCrk   r  r   r   r  Tr  )r/   r  )r   r*  r  ri   s       r8   "test_category_implicit_from_pandasz2TestConvertMisc.test_category_implicit_from_pandasZ  sR    	D NN?SzBNN?Sz#')

  	C3K	rk   c                 n    t        j                  dt        j                  g       i      }t        |       y )Nr  )r/   r0   r  r]   r   s     r8   test_empty_categoryz#TestConvertMisc.test_empty_categoryi  s&    \\5".."456#rk   c                    t        j                         dft        j                         dffD ]  \  }}t        j                  g t        j                  t        j
                         |            }|j                         }t        j                  g t        j                  g |            }t        j                  t        j                  |      t        j                  |             t        j                  d|i      }|j                         }t        j                  d|i      }t        j                   ||        y )Nr@   r   r   r  r   )rF   r  r   r  
dictionaryr   rJ   r/   r  r1   rc   rS   re   rd   rZ   r0   rT   )r   r  r   r   r[   rV   rZ   s          r8   test_category_zero_chunksz)TestConvertMisc.test_category_zero_chunksn  s     "		X6W8MN 		4NGU  R]]2779g%FGA[[]F~~bRXXb5NOH""299V#4bii6IJHHc1X&E__&F||S(O4H!!&(3		4rk   zdata,error_typer   )r   r   r   r   Tr   c                     t        j                  |      }d}t        j                  ||      5  t        j
                  j                  |       d d d        y # 1 sw Y   y xY w)N/Conversion failed for column a with type objectr.  )r/   r0   r   rK  rF   rH   rI   )r   r   
error_typerU   r&  s        r8   test_mixed_types_failsz&TestConvertMisc.test_mixed_types_fails{  sL     \\$?]]:S1 	%HH  $	% 	% 	%s    AA!c           
      2   g }g d}d\  }}t         j                  j                  ||      j                         dz  }g d}|D ]T  }t	        j
                         5  t	        j                  d       |j                  |j                  |             d d d        V |j                  t        j                  t        ||z        D cg c]  }t        d       c}t              j                  ||      j                                t        j                  g d|z  t              j                  ||      j                         }	d |	d	<   |j                  |	       |j                  t        j                  d
||z  d      j                  ||      j                                |dkD  j                  t              d d df   }
|D ]A  }t!        j"                  ||      }|d   }t%        |       t'        |       t'        ||
       C y # 1 sw Y   xY wc c}w )Nr  )r  r   r  )
r  r  r  r  r  r  r  r  r  r  rA   r  r   r/  r   r#   r%   r   r   r   r  )r1   r3   r4   rs   rO   rP   r   r  rG  rc   r5   r   r@   reshaper2   r"   r/   r0   r]   rv   )r   casesrL   NKrandom_numbersnumeric_dtypes	type_namer  boolean_objectsstrided_maskcaserU   r\   s                 r8   test_strided_data_importz(TestConvertMisc.test_strided_data_import  s   !1A.335;& ( 	?I((* ?%%h/^229=>? ?	? 	RXXq1uFA|B/F$*,gamDDF	,
 88$7!$;6J#GAqM$$& 	 "_%RYY8!a%%57gamDDF	, '*2248A> 	;DdG4BS'C#B'"3'"3\:	;/? ?
 Gs   6HHH	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                     y )Nc                     t        j                  |       }t        |t         j                        sJ t	        |      dk(  sJ |j
                  dk(  sJ |D ]  }|t         j                  u rJ  y )Nr   )rF   rc   r   	NullArrayr   rq   r  )rf   r  items      r8   _check_seriesz5TestConvertMisc.test_all_nones.<locals>._check_series  sh    Ii666y>Q&&&''1,,,! %ruu}$}%rk   r   r   )r/   rd   r@   r1   rN   )r   rE  s     r8   test_all_noneszTestConvertMisc.test_all_nones  s]    	% 	bii
&9:bii1F;<biirvvt 4FCDrk   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   |       y )Nr   )r   r   r*   r   r   r   )ir   r   r  r   r   )r;   rV   rW   )r   r1   rc   r   r/   r0   rF   r;   r   r   r]   )r   r   rU   partial_schemas       r8   test_partial_schemaz#TestConvertMisc.test_partial_schema  s    /""((.bhh?@%&
 
 \\$HHS"((*%HHS"((*%$
 
 	 >)+S#J0>	@rk   c                 X   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       y )	Nr   T)r<   rX   r   Fr   r   )rX   r<   )r/   r0   r]   r   )r   rU   rV   r   s       r8    test_table_batch_empty_dataframez0TestConvertMisc.test_table_batch_empty_dataframe  s|    \\"484$G<<5HUCHUTRll2Y/D9d4Hrk   c           
      t   t        j                  g t        j                               }t        j                  t        j                  g t                    }t        j                  |j                         t        j                  t        j                  g t
        j                                     t        j                  g t        j                  t        j                                     }t        j                  |j                         |       t        j                  g t        j                  t        j                  dt        j                               g            }t        j                  |j                         |       t        j                  g t        j                               }t        t        j                        t        d      k\  r@t        j                  g t               }t        j                  |j                         |       y t        j                  |j                         |       y )Nr}  r   r   r  )rF   rc   r   r/   rd   r1   r@   rS   re   rJ   r  r  r   r  r   r@  r,   )r   ri   empty_objectsr.   s       r8   test_convert_empty_tablez(TestConvertMisc.test_convert_empty_table  sC   hhr
+		"((2V"<=
s}}!yy"BHH)EF	Hhhr 45
s}}>hhr		288C+D*E FG
s}}>hhr		,2>>"gg&66		"C0I""3==?I>""3==?MBrk   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                               }|j                         dd	gk(  sJ t        j                  |d   t        j                               }|j                         d
dgk(  sJ y)zt
        ARROW-2172: converting from a Numpy array with a stride that's
        not a multiple of itemsize.
        r7   rR  )r  rO  )r*   r   )r   r}  r  rQ  rO  r*   N)r1   r   r   r   rc   r  rF   r  )r   r   r   ri   s       r8   test_non_natural_stridez'TestConvertMisc.test_non_natural_stride  s    
 3/C?;<xx8,E:||t###hhtCyrxxz2}}2s)+++hhtCyrxxz2}}2q')))rk   c                 &   t        j                  ddt         j                        ddd   }t        j                  |t        j
                               }t        j                  g dt        j
                               }|j                  |       y )	Nr   r  r   r   rO  r*   r}  )r   r   r   g      @)r1   r2   r    rF   rc   r!   rK   )r   r  pa_arrrV   s       r8   #test_array_from_strided_numpy_arrayz3TestConvertMisc.test_array_from_strided_numpy_array  s\    1b

3AbF;&rzz|4880rzz|Dhrk   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                  j                  ||       d d d        t
        j                  j                  ||d	
      }|j                  d      j                   t        j                         k(  sJ y # 1 sw Y   ^xY w)Nabcr   r   r   )r   r  r   r  r~  Fr  )r/   r0   r)  r1   linspacerF   r;   r   r  r   r   rK  rL  rH   rI   r%  r`   r  s       r8   test_safe_unsafe_castsz&TestConvertMisc.test_safe_unsafe_casts  s    \\eQ1%
 
 HHS"))+&HHS"((*%
 
 ]]:& 	4HH  F 3	4 $$RU$C||C %%333		4 	4s   3"D22D;c           	         	 t        j                  dt         j                  j                  dt        j
                  dg      i      }t        j                  t        d      5  t        j                  j                  |       d d d        y # t        $ r> t        j                  dt        j                  dt        j
                  dg      i      }Y w xY w# 1 sw Y   y xY w)Nr   r   r   zSparse pandas datar.  )r/   r0   r  SparseArrayr1   rN   AttributeErrorr   rK  r  rF   rH   rI   r   s     r8   test_error_sparsez!TestConvertMisc.test_error_sparse  s    	EsBII$9$91bffa.$IJKB ]]9,@A 	%HH  $	% 	%  	EsBNNArvvq>$BCDB	E	% 	%s   AB " CACCCN)/r  r  r  r  rF   r   r   r   r   r   r   r   r   r  r    r!   r  r_  r  r  r  r  r  r  r  r   r  	processes	threadingr  r'  r+  r-  r0  r  r0  rw  r4  r@  rF  rJ  rL  rO  rR  rU  rY  r]  r?  rk   r8   r  r    sD   
 
	("((*	("((*	("((*	("((*	9299;	9299;	9299;	JBJJL!	JBJJL!	JBJJL! 
9299;	9299;	9299R=!	8288HBHHJ'(#J($$
66# [[[[  .4$
4 [[=!2#4#45=!2#4#45At9r001D#;1As8_boo.C:0	

%
%);VE@"IC$* 4$%rk   r  c                     t        j                  g d      } t        j                  j	                  | t        j
                         d      }t        j                  g dt        j
                               }|j                  |      sJ y )N)r   r*   Nr   Tr`   rQ  r}  )r/   rd   rF   r  rI   r   rc   rK   )rt   ri   rV   s      r8   *test_safe_cast_from_float_with_nans_to_intrb  %  sY    YY'F
((

vBHHJT

BCxxbhhj9H::hrk   c                  L   t         j                  j                  t        j                  dd      j	                  d      t        j                  t        j                  ddgt              d      g      } t        j                  dd      }||j                  d	      |j                  d
      |d d d   j                  d	      j	                  d      j                  d      ddgdz  t        j                  ddgdz        j                  d      j                  ddgdz  t
        j                  j                  d      t
        j                  j                  ddd      t        j                   ddd      t        j"                  ddd      d}t        j$                  ||       S )Nr  r   )r   r*   r   rf  r   r  r  rq  r!  TFr   r  r  2013Mr   r   r   )r;  r   r   )r   r   r*   r   r   r   r   r   r   r  r  r   )r/   r   r   r   repeatr1   tilerc   r@   r  rG  rd   rt   r3   r4   r  period_rangeinterval_ranger0   )r   r  r   s      r8   _fully_loaded_dataframe_examplerk  ,  sM   MM%%
lA.55a8
%v6:' E
 
|R	0B>>% >>,'cc7u%,,Q/66zB5>A99eU^a'(//
;BB%=199??299Q"-??62C8AAr:D <<E**rk   rL   r[  r   c                    t        j                  |       }t        j                  j	                  |      }t        j                  j	                  |j                               }|j                  |      sJ |j                  j                  |j                        sJ |j                  j                  |j                  j                  k(  sJ y )Nr   )	r/   r0   rF   rH   rI   rJ   rK   r;   r&  )rL   rU   table1table2s       r8   !test_roundtrip_with_bytes_unicodero  C  s    	g	&BXX!!"%FXX!!&"2"2"45F==   ==...==!!V]]%;%;;;;rk   c                 Z    | dz  }| dz  } | dz  }| dz  } | dz  }| dz  }t        ||||      S )Nr  r  )r   )valrD  secondsr~  r  s        r8   _pytime_from_microsrs  M  sI    =LGOCBhGBJCBhG2IEw66rk   c                 z    | j                   dz  | j                  dz  z   | j                  dz  z   | j                  z   S )Nl    $'- i r  )hourminuter  r  )pytimes    r8   r  r  W  sE    KK*$MMH$%MMG#$   rk   c                       G d d      } t        j                  d |         |        gi      }d}t        j                  t        |      5  t
        j                  j                  |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)6test_convert_unsupported_type_error_message.<locals>.ANr  r?  rk   r8   r   rz  b  s    rk   r   r   r2  r.  )r/   r0   r   rK  rL  rF   rH   rI   )r   rU   r&  s      r8   +test_convert_unsupported_type_error_messager{  ^  sc      
sQS!#J'	(B
;C	z	- !
R ! ! !s    A44A=c                     | j                         }t        j                  || j                  d      }|j	                  |       sJ y )NTrP  )rJ   rF   rc   r`   rK   )ri   rf   r   s      r8   test_array_to_pandas_roundtripr}  p  s5    Axxd;H??3rk   c                 X    t        |       D cg c]  }t        d       }}||z  S c c}w )Nr  )r5   r   )nuniquerW  r  unique_valuess       r8   _generate_dedup_exampler  {  s-    (-g71U2Y7M77"" 8s   'c                 \    t        | D ch c]  }t        |       c}      |k(  sJ y c c}w r  )r   r  )r  rV   r7   s      r8   _assert_nuniquer    s'    s#!1#$000#s   )c                     t        j                         rt        j                  d       d} d}t	        | |      }t        j                  |t        j                               t        j                  |t        j                               t        j                  ||g      fD ]A  }t        |j                         |        t        |j                  d      t        |             C y )NDpandas uses string dtype and not object dtype, keyword has no effectr  r  r}  Fdeduplicate_objects)r   r  r   rs  r  rF   rc   r_  r7  r  r  rJ   r   )r  rW  rt   ri   s       r8   .test_to_pandas_deduplicate_strings_array_typesr    s    $$&R	
 GG$Wg6Fbiik2bggi0  &&!124 L 	1%@#c(K	Lrk   c                     t        j                         rt        j                  d       d} d}t	        | |      }t        j                  |      }t
        j                  j                  |gdg      }t
        j                  j                  |g      }||fD ]G  }t        |j                         d   |        t        |j                  d      d   t        |             I y )Nr  r  r  r   Fr  )r   r  r   rs  r  rF   rc   rG   r   rH   rS  r  rJ   r   )r  rW  rt   ri   r  r  r  s          r8   .test_to_pandas_deduplicate_strings_table_typesr    s    $$&R	
 GG$Wg6F
((6
C		#	#SEE7	3B
((


%CCy ".8%@GC	""rk   c                  &   d} d}t        t        j                  j                  dd|             }d || dz  <   t	        j
                  ||z        }t        |j                  d      |        t        |j                  dd	
      | dz
  |z  dz          y )Nr  r  i i ʚ;r  r*   TrW  F)rX  r  r   )r)  r1   r3   r  rF   rc   r  rJ   )r  rW  r  ri   s       r8   .test_to_pandas_deduplicate_integers_as_objectsr    s    GG **8Zg*NOM"&M'Q,
((=7*
+CCMMtM<gFCMMt6; " = q[G+a/1rk   c                  R   d} d}t        t        |             }ddddifddddifdd	i fdd
i fg}|D ]t  \  }}}t        j                  ||z  |      }|j	                  |      }t         |j                  di ||        t         |j                  dddi|t        |             v y )Nr  r  r   r  r  Tr   r  r  r  r}  r  Fr?  )r)  r5   rF   rc   rx  r  rJ   r   )	r  rW  r  r7  raw_type
array_typepandas_optionsraw_arr
casted_arrs	            r8   $test_to_pandas_deduplicate_date_timer    s    GGw(M 
(-t45	(-t45	,#	,#E 16 ),*n((=72B\\*-
,
,,>~>	!,
,, ? ?/=?J	))rk   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                  j                  | |	       d d d        y # 1 sw Y   y xY w)
N)333333?g @r   r  r   rF  r   Fr  r   r~  )r/   r0   r1   rN   rF   r;   r   r!   r7  r   rK  rL  rH   rI   )rU   r;   s     r8   /test_table_from_pandas_checks_field_nullabilityr    s    	OVVXu57 
8BYYbjjlUCbggi%@B CF 
z	" 0
R/0 0 0s   ,"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                  j                  | d
      }t        j                  j                  |d
      }|j                  j                  |      sJ |j                  j                  |      sJ y )N	partitionr   r   r   r   r  r   r   r   r9  NNr   gffffff
@r9  r  r  Fr   )r/   r0   r   rF   r;   r   r  r!   rH   rI   rK   )df1r   schema1schema2rm  rn  s         r8   6test_table_from_pandas_keeps_column_order_of_dataframer    sA   
,,{	l#	I1vtT23	)*$  C
 /
0Cii	bhhj!	288BHHJ'(	2::<  G
 ii	2::< 	bhhj!	288BHHJ'( G XX!!#e!<FXX!!#e!<F==(((==(((rk   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                  j                  ||d      }t        j                  j                  ||d      }|j                  j                  |      sJ |j                  j                  |j                        sJ y )Nr  r  r  r   r   r   r9  r  r   r   r  Fr@  )r/   r0   r   rF   r;   r!   r  r   r  rH   rI   rK   )rU   r;   r  r   rm  rn  s         r8   3test_table_from_pandas_keeps_column_order_of_schemar    s"   	k	l#	I1vtT23	)*#  
B YY	2::< 	288BHHJ'(	bhhj! F R\\Q
C
R\\Q
 A
BCXX!!#fU!KFXX!!#fU!KF=='''==...rk   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                  j                  | |d
      }t        j                  j                  | |d
      }|j                  j                  |      sJ |j                  j                  |      sJ y )Nr  r  r  r   r   r   r9  r  )r  r9  r  F)rL   r<   )r/   r0   r   rF   r;   r  r   r!   rH   rI   rK   )rU   columns1r  columns2r  rm  rn  s          r8   ;test_table_from_pandas_columns_argument_only_does_filteringr    s2   	k	l#	I1vtT23	)*#  
B 1Hii	288BHHJ'(	2::< 	bhhj! G +&Hii	2::< 	bhhj! G
 XX!!"hu!MFXX!!"hu!MF==(((==(((rk   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                  j                  | ||	       d d d        y # 1 sw Y   y xY w)
Nr  r  r  r   r   r   r9  r  )r;   rL   )r/   r0   r   rF   r;   r   r  r!   r   rK  rL  rH   rI   )rU   r;   rL   s      r8   @test_table_from_pandas_columns_and_schema_are_mutually_exclusiver  +  s    	k	l#	I1vtT23	)*#  
B
 YY	bhhj!	288BHHJ'(	2::<  F
 "G	z	" A
R@A A As   8#C$$C-c                     t        j                  dg di      } t        j                  t        j                  dt        j
                         d      g      }t        j                  j                  |       }|j                  j	                  d      j                  du sJ t        j                  j                  | |      }|j                  j	                  d      j                  du sJ y )Nr   r   Fr  Tr~  )	r/   r0   rF   r;   r   r   rH   rI   r  rU   r;   rZ   s      r8   /test_table_from_pandas_keeps_schema_nullabilityr  <  s    	sL)	*BYY
bhhj51 F HH  $E<<c"++t333HH  F 3E<<c"++u444rk   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                  t        d      5  t        j                  j                  | |	       d d d        d| j                  _        t        | |d
|       t        j                  t        d      5  t        j                  j                  | |d       d d d        t        j                  t        d      5  t        j                  j                  | |d        d d d        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      }| j!                         }|j#                  d
      }t        | |d ||       t        | |d
||       t         j$                  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      }| j!                         }|j#                  dd
      }t        | |d
||       t        | |d ||       y # 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   r  rF  r   r   r   zname 'index' present in ther.  r~  T)r;   r<   rW   z'preserve_index=False' wasFr@  z=name 'index' is present in the schema, but it is a RangeIndexr   ra   r  )r;   r<   rW   rV   ))r   r   )r   r*   )r   r   level1level2r   )r/   r0   rF   r;   r   r!   r   rK  KeyErrorrH   rI   r   rb   r]   rL  r   rs   r  r   from_tuplesr  )rU   r;   rV   s      r8   +test_table_from_pandas_schema_index_columnsr  J  sq   	IO<	=BYY	bhhj	bjjl	"((* F 
x'D	E 0
R/0 BHHM Bvd,24 
z)E	F F
RuEF
 
z *J 
K E
RtDE xx	0BH Bvd,24Bvd,24 YY	"((*	bhhj	bjjl F
 Bvd,24Bvd,24
 YY	bhhj	bjjl F wwyH###.HBvd,2XGBvd,2XG }}(()G08(/C ) EBHYY	299;	288:	bhhj	bjjl	 F Bvd,24Bvd,24 YY	288:	bhhj	bjjl F
 wwyH##H4#8HBvd,2XGBvd,2XGW0 0F F
E Es$   "O1#O'7#O4O$'O14O>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                  j                  | d      }t        j                  j                  | d|	      }|j                  j                         j                  |      sJ t        j                  g dg ddg d
      } t        j                  j                  |       }t        j                  j                  | |      }|j                  j                         j                  |      sJ y )Nr   r  rF  r   r   r   Tr   )r<   r;   r   r   r~  )r/   r0   rF   r;   r   r!   SchemarI   rH   ry  rK   )rU   rW   r;   rZ   s       r8   :test_table_from_pandas_schema_index_columns__unnamed_indexr    s   	IO<	=Bii	bhhj	bjjl	bhhj)! O YY""2d";FHH  D HE<<'')00AAA 
IO<I	NBYY""2&FHH  F 3E<<'')00AAArk   c                  "   t        j                         } t        j                  j	                  |       j                  ddi      }t        j                  j	                  | |      }|j                  j                  j                  d      dk(  sJ y )NmetaTruer~  s   metas   True)
r/   r0   rF   r  rI   r  rH   r;   r&  getr  s      r8   2test_table_from_pandas_schema_with_custom_metadatar    sm    	BYY""2&44ff5EFFHH  F 3E<<  $$W-888rk   c            
      |   t        j                  t        j                  ddd      t        j                  j                  d      d      } t        j                  t        j                  dt        j                         d      t        j                  d	t        j                  d
d      d      g      }t        j                  j                  | |      }|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 |j                         }ddi}t!        t         j"                        t!        d      k\  rd|d	<   | dd	g   j%                  |      }t'        j(                  ||       y )Nz2020-01-01T00:00:00ZrI  r*   )r   r   )r   rQ  rQ  Tr  r   rf   r  r  Fr~  rL   r   rb   r&  r   r   r    r7  zdatetime64[s, UTC])r/   r0   r   r1   r3   r4   rF   r;   r   r    r  rH   rI   rK   r  rJ   r   r@  rG  rS   rT   )rU   r;   rZ   metadata_floatmetadata_datetimer[   coerce_cols_to_typesrV   s           r8   2test_table_from_pandas_schema_field_order_metadatar    s    
MM"8sAN# 
B
 YY
"**,6
R\\#%85I F
 HH  F 3E<<v&&&\\11)<Q?N&!W,,,*%---44Y?BV$
222Z(Z,????__F#Y/r~~''"22+?Z(7J'(//0DEH&(+rk   c                  b   t        j                  t        j                  g dd      t        j                  g dd      t        j                  j                  d      g dg dd      } t        j                  j                  |       }|j                         }t        j                  | |       y )	Nr   r*   r   r   r   r   r   r   r   )r   rf  Nru  rZ  )FTFTF)r  r  c3c4c5)r/   r0   r1   rc   r3   r4   rF   rG   rI   rJ   rS   rT   )r   rW  r[   s      r8   test_recordbatch_from_to_pandasr    sy    <<hhg6hhh7iiooa 0/ D NN&&t,E__F$'rk   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
                  j                  |       }t        j
                  j                  |      }t        j                  j                  ||g      }|j                         }t        j                  | |g      j                  d      }t        j                  ||       y )N)r   r   r*   r   r   r   r!   )TNF)r   rf  N)r  r  r  r  r   r   r   r   Tru  rZ  r  )r/   r0   r1   rc   rF   rG   rI   rH   rS  rJ   r  r  rS   rT   )r  r  batch1batch2rZ   r[   r   s          r8   test_recordbatchlist_to_pandasr    s    LLhhy1hhi8!"	 E LLhh1vX.hhSz3Tlen	 E ^^''.F^^''.FHH!!66"23E__F99eU^$00d0;D$'rk   c                  D   t        j                  t        j                  g d      gdg      } t        j                  t        j                  g d      gdg      }| d   j	                         j
                  dk(  sJ |d   j	                         j
                  dk(  sJ y )Nr   a0r   r   )rF   record_batchrc   rZ   rJ   rb   )r  r  s     r8   *test_recordbatch_table_pass_name_to_pandasr    s|    	"((<01$	@B
"((<()$8Aa5??!!T)))Q4>>  D(((rk   r`   rV   rH  r"   r   r   r   r   r   r   r   r   r  r    r!   r   ro  r   )lengthr/  zlist[list[int16]]r   r   r   rl  r   r4  r  r<  rf   r   c                 $    t        |       |k(  sJ y r  )r   r  s     r8   test_logical_typer    s    < D!X---rk   c                     d} t        j                  t        j                  | t        j                        t        j
                  j                  dd|       j                  t        j                              }t        j                          t        j                         }|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                         }|j                         }t        j                         |k(  sJ y )N'  r   r   r*   r  r  r   )rF   rc   r1   r2   r   r3   r  rG  r  r  r  r  rJ   )r8  ri   prior_allocationr7   s       r8   test_array_uses_memory_poolr  ;  s   A
((299Qbhh/		))!QQ)7>>rxxHJC JJL//1A##%*:QU*BCCCAJJL##%)9999 ((299Qbhh/
0C//1A##%)9999rk   c                  ~   t        j                  t        j                  t        j                  dt        j
                              gdg      } t        | d       t        j                         }| j                         }|d   j                  j                  j                  sJ t        j                         |kD  sJ y )Nr  r   r  Tsplit_blocks)rF   rZ   rc   r1   r2   r   !_check_to_pandas_memory_unchangedr  rJ   _valuesflags	writeable)r  r  r[   s      r8   test_singleton_blocks_zero_copyr  U  s    
"((299T:;<tfEA &ad;//1[[]F$<%%////##%(8888rk   c                 R   t        j                          t        j                         } | j                  di |}t        j                         r@t        d|j                  j                  dz        }t        j                         ||z   k  sJ y t        j                         |k(  sJ y )N   r*   r?  )
r  r  rF   r  rJ   r   r  r  rL   nbytes)r  kwargsr  r7   max_index_allocations        r8   r  r  c  s    JJL//1A $$&  #3		(8(81(<='').>AU.UVVV'')-====rk   c                  P   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t        d	      D  cg c]  } d
|  	 c}       }t	        |d	       t        |d       y c c} w )Nr  r  r  r}  r  r  r  r  r   r)  Tr  )rF   rZ   rc   r5   _check_blocks_createdr  )r  r  s     r8   test_to_pandas_split_blocksr  r  s    

$40
$40
$40
$40
$40
$40
$40
$40	 q"A!A3"		$A !Q%ad; #s   6D#
c                 |    t        t        j                        t        d      k  r| j                  S | j                  S )Nz1.1.0)r   r/   r@  _data_mgrr  s    r8   _get_mgrr    s*    r~~!11xxwwrk   c                 n    | j                  d      }t        t        |      j                        |k(  sJ y )NTr  )rJ   r   r  blocks)r  numberr7   s      r8   r  r    s/    	&Ax{!!"f,,,rk   c                  f    dfd}  |        }t        |dd        |        }t        |d       y )N2   c                     t        j                  t              D  cg c]:  } t        j                  t        j
                  j                  d      d d d         < c} t              D  cg c]  } d|  	 c}       S c c} w c c} w )Nr  r*   r)  )rF   rZ   r5   rc   r1   r3   r4   )r  r9  s    r8   _make_tablez1test_to_pandas_self_destruct.<locals>._make_table  su    xx 1X
  HHRYY__U+CaC01
 #1X&asG&	( 	( 
 's   ?A?,B
T)r  self_destruct)r  )r  )r  r  r9  s     @r8   test_to_pandas_self_destructr    s5    
A( 	A%ad$O 	A%at<rk   c                     d} t        j                  t        j                  | t        j                              }t        j
                  |||gg d      }t        j                          t        j                         }|j                         }d| z  dz  }t        j                         r|dz  }t        j                         ||z   k(  sJ d }t        j                          t        j                         |k(  sJ y )Nr  r   )r  r*  r  r   r      )rF   rc   r1   r2   r   rZ   r  r  r  rJ   r   r  )r8  ri   r  r  r7   new_allocations         r8   test_table_uses_memory_poolr    s    A
((299Qbhh/
0C
#sC"45AJJL//1	AUQYN$$&###%*:^*KLLL 	AJJL##%)9999rk   c                  @   t        j                  ddig      } | j                         }|j                  t	        j                  d      k(  sJ |d   }t        j                  |      }t        j                  |      |k(  sJ ~t        j                  |      |dz
  k(  sJ y )Nr   r   r@   r   )rF   rc   rJ   r   r1   r  getrefcount)ri   r  r  refcounts       r8   test_object_leak_in_numpy_arrayr    s    
((S!H:
C]]_F<<288H----
)Cs#H??38+++??38a<///rk   c                  v   t        j                  ddig      } t        j                  | gdg      }|j                         d   }|j                  t        j                  d      k(  sJ |d   }t        j                  |      }t        j                  |      |k(  sJ ~t        j                  |      |dz
  k(  sJ y )Nr   r   r  r@   r   )rF   rc   rZ   rJ   r   r1   r  r  )ri   rZ   r\   r  r  s        r8   test_object_leak_in_dataframer    s    
((S!H:
CHHcUTF#E
//
D
!C99****
a&Cs#H??38+++??38a<///rk   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 |j                  t        j                  |            sJ |j                  t        j                  |            sJ y )	Nr  g333333@g      "@g      E@r   r}  r   r   )	rF   r    rc   r  r1   r/   rd   r`   rK   )r   r  rp  r  r  r  s         r8   test_array_from_py_float32r    s    #Jd$D


A88DG!$D88Drxx{+Da

3I		288DG2::>88DG2::>@ AI 99>>;;rxx	*+++;;rxx	*+++rk   c                     t        j                         } t        j                  | g      }|j                  j                  d      j                  j                  d      }t        j                  dd      }t        j                  j                  ||      }|j                  |k(  sJ t        j                  j                  |t        j                  d            }|d   j                         |d   j                         k(  sJ |d   j                         |d   j                         k(  sJ t        j                  dgd      j                  t        j                  d	            }t        j                  d
gd      j                  t        j                  d            }|j                  t        j                  d	      k(  sJ t        j                  d      }t!        j"                  t$              5  |j                  |       d d d        |j                  |d      }|j'                  |      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        t!        j"                  t$              5  t        j                  j                  |	t        j                  d             d d d        t        j                  j                  |	t        j                  d      d      }|j'                  |      sJ t        j                  |	t        j                  d      d      }|j'                  |      sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nz	tzlocal()r9  r4  r  r}  r   i r   rl  {   rf   FrP  r   r  r  )r   r   r   ra  )r   nowr/   rd   r  r  
tz_convertrF   r  r  rI   r`   r  to_pydatetimerc   rx  r   rK  rL  rK   r4  )
rq  rf   s_nyc
us_with_tzri   r  rV   targetr[   r  s
             r8   test_cast_timestamp_unitr    s   
,,.C
		3%ADD[),,778JKEd'9:J
((

u:

6C 88z!!!88T(:;Dq6<<>U1X3355557==?ad002222 ((F8'
*
/
/T0B
CCxxG,11",,s2CDH 88r||D))))\\#F	z	"  XXf5X)F==""" YYQb)92<<;MNOFxx	T(:;H	z	" 2
bll4012 
z	" >
V",,t*<=> XX!!&r||D/A!NF=="""XXf2<<#5EBF==""") 2 2> >s$   4O
+O'5O3O$'O03O<c                  r   t         j                  j                         } | j                         }t	        j
                  |gt	        j                  dd            }t        j                  j                  ||gddg      }|j                         }t	        j
                  |      }|j                  |      sJ y )Nr4  r9  r  r}  r;  stop)r/   r4  r  r  rF   rc   r  r+  r   rJ   rK   )tsts_dtri   r  r[   r   s         r8   (test_nested_with_timestamp_tz_round_tripr
    s    				BE
((E7d7I!J
KC^^''c
Wf4EFFFxxH??6"""rk   c                     t         j                  j                         } | j                         }dD ]  }|dv rd }nd }t	        j
                  | gt	        j                  |            }t	        j
                  | gt	        j                  |d            }t        j                  j                  ||gdd	g      }t        j                  j                  ||gdd	g      }|j                         }t        |d
   d   t              sJ |d
   d   j                  J t        |d
   d	   t              sJ |d
   d	   j                  J |j                         }t        |d
   d   t              sJ |d
   d   j                  J |d
   d   j                  t        j                        }	 ||	      j!                  d        ||      k(  sJ t        |d
   d	   t              sJ |d
   d	   j                  J t	        j"                  d|i      j                         }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      j                         }t        |d   d
   d   t              sJ |d   d
   d   j                  J t        |d   d
   d	   t              sJ |d   d
   d	   j                  J  y )Nr$  )rf   rl  c                 &    | j                  d      S )Nr   r  )rM   r7   s    r8   truncatez/test_nested_with_timestamp_tz.<locals>.truncate0  s    AII!I$<<rk   c                     | S r  r?  r  s    r8   r  z/test_nested_with_timestamp_tz.<locals>.truncate2  s    AXrk   r}  r9  r  r;  r  r   r  r   )r/   r4  r  r  rF   rc   r  r+  r   rJ   r   r   r  
astimezoner   r  rM   rZ   )
r  r	  r3  r  ri   r  arr3arr4r[   utc_dts
             r8   test_nested_with_timestamp_tzr  %  s   				BE " &9; =%hht",,t"45xx2<<9K#LM~~))3*w6GH~~))4,&8IJ!&)G,h777ay!((000&)F+X666ay ''///!&)G,h777ay!((4447#..x||<''t'4GGG&)F+X666ay ''333 3+&002&+a.18<<<c{1~g&--555&+a.0(;;;c{1~f%,,4443+&002&+a.18<<<c{1~g&--999&+a.0(;;;c{1~f%,,888M&9rk   c                  "   t        j                  g dd      } t        j                  g dt              }t        j                  g d      }dD ]0  }| j	                  |      }t
        j                  j                  ||      }t
        j                  j                  |||      }|dk(  r5t        j                  t        d	
      5  |j                          d d d        |j                         }|dk(  r|j	                  d      }n0|dk(  r|j	                  d      }n|dk(  r|j	                  d      }n|}t        j                  j                  ||      }	t        j                   t        j"                  |      t        j"                  |	             |j                         }
|
j%                         j'                         dk(  sJ |dk(  r|j	                  d      }n0|dk(  r|j	                  d      }n|dk(  r|j	                  d      }n|}t        j                  j                  t        j(                  |d|      |      }t        j                   t        j"                  |
      t        j"                  |             3 y # 1 sw Y   xY w)Nr   r*   rt  r   )FFTFFF)r   r   r   r   r   r   r   r   r  r   zUInt64 dictionary indicesr.  r   r   r   r   r   r   r  r   rO  )r1   rg  rc   r@   rG  rF   rR  r   r   rK  r  rJ   r/   r  
from_codesrS   re   rd   rp   rr   where)src_indicesr/  rm   
index_typerU  d1d2pandas1compare_indices
ex_pandas1pandas2signed_indices
ex_pandas2s                r8   test_dictionary_with_pandasr"  Y  s   ))Iq)K/v>J88=>D* ,J
$$Z0++GZ@++GZd+K!y%@B  ,,.  %nnW5O8#%nnW5O8#%nnW5O%O^^..:.V

ryy1299Z3HI,,.~~##%***  $^^G4N8#$^^G4N8#$^^G4N$N^^..rxxb8F0H:D / F
 	ryy1299Z3HIY,J s   JJ	c                 <   |/|t         j                  j                  dt        |      |          }n;t        j                  t        |       D cg c]  }t        |       c}t              }|dkD  r%d |t         j                  j                  |       |k  <   |S c c}w )Nr   r  r   )	r1   r3   r  r   rc   r5   r   r@   rand)r[  	item_sizepct_nullr/  r[   r  s         r8   random_stringsr'    s    BII--aZq-IJE!HEq<	2E &( !|/3ryy~~a 8+,M Fs   Bc                     t         j                  j                  d       t        j                  t        dd      d      } t        j                  t        dd      d      }t        j                  t        dd      d      }t        j                  j                  t         j                  j                  d	t        |       d
d      |       }t        j                  j                  t         j                  j                  d	t        |      d
d      |      }t        j                  j                  t         j                  j                  d	t        |      d
d      |      }t        j                  t         j                  j                  d	t        |      d
d      t         j                  j                  d
      dk        }t        j                  j                  ||      }t        j                  | ||g      }t        j                  ||||g      }	t        j                  |j                  d      |j                  d      |j                  d      |j                  d      g      }
|	j                         }|
j                         }|j                  j                   |j                         k(  j#                         sJ |j%                  d      }d ||j'                         <   t)        j*                  ||       y )Ni90  r      r  r}  r  r  r  r   r  r  r  r  r  r,   )r1   r3   r%  rF   rc   r'  rR  r   r  r   r$  concat_arraysr  rx  rJ   r  r  r  rG  rp   rS   re   )r  r  d3r  rL  r  r  r  expected_dictr   a_denser[   result_denseexpected_denses                 r8   "test_variable_dictionary_to_pandasr0    sJ   IINN5	.b)	9B	.b)	9B	.+(	;B				'	'
		!SW4t<

B 
			'	'
		!SW4t<

B 
			'	'
		!SW4t<b
BB 

		!SW4t<YY^^D!C'
B 
			'	'B	/B$$b"b\2M
"b"b)*A 1 " 1 " 1 " 1 3 4G
 [[]F$$&LJJ!!]%<%<%>>CCEEE]]5)N,0N<&&()<8rk   c                  x   t        j                  g d      j                         } t         j                  j	                  g d|       }|j                         }t        j                  t        j                  g dt              t        j                  ddgt              g      }t        j                  ||       y )N)r   r   r   r   r   rv  )r   r   r   r   r   )rF   rc   r  r,  r   rJ   r/   rd   r1   r@   rS   re   )rW  ri   r[   rV   s       r8   (test_dictionary_encoded_nested_to_pandasr2    s    HH./AACE
,,
"
"9e
4C]]_Fyy"((?&A((C:V<> ?H 68,rk   c                     t        j                  g d      } t        j                  t        j                         t        j                         rt        j                         nt        j                               }t        j                  |       }|j                         g dk(  sJ |j                  j                  |      sJ t        j                  g d      } t        j                  |       }|j                         g dk(  sJ |j                  j                  |      sJ t        j                  | t        j                  g d            }|j                         g dk(  sJ |j                  j                  |      sJ y )N)r   r   r   )r   r   Nr   )FFFTr  )r   r   NN)r/   r  rF   r/  r   r   r  rV  r  rc   r  r`   rK   r1   )r  r  r[   s      r8   test_dictionary_from_pandasr4    s   
..
)CMM
	(::<"))+M
 XXc]F000;;m,,, ...
/CXXc]F!6666;;m,,, XXc)D EFF!7777;;m,,,rk   c                     t         j                  j                  t        j                  ddgd      t        j                  ddgt
                    } t        j                  t        j                         t        j                               }t        j                  | |      }|j                  j                  |      sJ |j                         ddgk(  sJ t        j                  t        j                         t        j                               }t        j                   t        j"                        5  t        j                  | |      }d d d        t        j                  t        j                         t        j                         d	
      }d}t        j                   t$        |      5  t        j                  | |      }d d d        |j                         ddgk(  sJ t        j                  t        j                         t        j                               }t        j                  | |t        j                  dd	g            }|j                  j                  |      sJ |j                         dd gk(  sJ t        j                  g       } t        j                  t        j                         t        j                               }t        j                  | |      }|j                  j                  |      sJ |j                         g k(  sJ t        j                  t        j                         t        j                               }t        j                  | |      }|j                  j                  |      sJ |j                         g k(  sJ t        j                  ddg      } t        j                  | t        j                               }t        j                  ddgt        j                               }|j                  |      sJ |j                         ddgk(  sJ y # 1 sw Y   xY w# 1 sw Y   }xY w)Nr   r   r   r   r   r   )r  r
  r}  T)r  r
  r(  z4The 'ordered' flag of the passed categorical values r.  Fr  )r/   r  r  r1   rc   r@   rF   r/  r   r  r`   rK   r  r   r   r   rK  rw  rL  )r  r  r[   r&  rV   s        r8   *test_dictionary_from_pandas_specified_typer6    s    ..
#
#
!Qv&#s6(JLC
 --288:"))+
FCXXc$F;;c"""#s+++ --2779
DC	r	' )#C() --779dDC
@C	z	- )#C()#s+++ --288:"))+
FCXXc"((E4=*ABF;;c"""#t,,, ..
C
--2779
ECXXc$F;;c"""###
--2779
DCXXc$F;;c"""### ..#s
$CXXc		,Fxxc
5H=="""#s+++E) )) )s   7P60Q6Q Qc                  ^   t        t        j                        t        d      k  rt        j                  d       t        j
                  dg did      } | j                  d      } t        j                  | d   j                  j                        }t        j                  | d   j                  j                  j                        }t        |t        j                        sJ t        j                  j                  | d         }t        j                   j#                  ||      }||k(  sJ y )Nz1.3.0z:PyArrow backed string data type introduced in pandas 1.3.0r7   r   rf  r   zstring[pyarrow]r   r!  )r   r/   r@  r   rs  r0   rG  rF   rc   r  codesr  rt   r   r  rI   rR  r   )rU   rU  r/  rV   r[   s        r8   :test_convert_categories_to_array_with_string_pyarrow_dtyper:     s    r~~!11PQ	s12:K	LB	:	Bhhr#w{{(()G"S'++00778Jj"((+++xx##BsG,H++GZ@FXrk   c                     t        j                  dt        j                  g dd      i      } t        j                  |       }t        j
                  g dt        j                               }|d   j                  d      j                  |      sJ t        j                  dt        j                         fg      }t        j                  | |      }t        j
                  g dt        j                               }|d   j                  d      j                  |      sJ t        j
                  | d         }|j                  |      sJ t        j
                  | d   t        j                               }|j                  |      sJ t        j
                  | d   j                        }|j                  |      sJ t        j
                  | d   j                  t        j                               }|j                  |      sJ y )Nr   r  Int64r   r   r~  r}  )r/   r0   rd   rF   rZ   rc   r   rA  rK   r;   r!   rt   )rU   r[   rV   r;   r  s        r8   test_array_protocolr=  4  sw   	sBIIl'BC	DB
 XXb\Fxxbhhj1H!9??1$$X... YYbjjl+,-FXXb(Frzz|4I!9??1$$Y/// XXbgF=="""XXbgBJJL1F==### XXbgnn%F=="""XXbgnn2::<8F==###rk   c                   4     e Zd Z fdZd Zed        Z xZS )DummyExtensionTypec                 J    t         |   t        j                         d       y )Nz,pyarrow.tests.test_pandas.DummyExtensionTypesuper__init__rF   r   r   	__class__s    r8   rC  zDummyExtensionType.__init__S  s    G	Irk   c                      yNrk   r?  r  s    r8   __arrow_ext_serialize__z*DummyExtensionType.__arrow_ext_serialize__W      rk   c                 P    |dk(  sJ |t        j                         k(  sJ  |        S rG  )rF   r   )clsstorage_type
serializeds      r8   __arrow_ext_deserialize__z,DummyExtensionType.__arrow_ext_deserialize__Z  s+    S   rxxz)))urk   )r  r  r  rC  rH  classmethodrN  __classcell__rE  s   @r8   r?  r?  Q  s"    I  rk   r?  c                     t        j                  g dt        j                               }t         j                  j	                  t               |      S )Nr   r}  )rF   rc   r   ExtensionArrayfrom_storager?  )r   r`   storages      r8   PandasArray__arrow_array__rV  a  s7     hhyrxxz2G))*<*>HHrk   c                    t        j                  g dt        j                               }t         j                  j	                  t               |      }| j                  t        j                  j                  dt        d       | j                  t        j                  j                  dt        d       t        j                  ddd	      j                  t        j                  d
d      j                  fD ]  }t        j                  |      }|j                  |      sJ t        j                  t        j                  |            }|j                  |      sJ t        j                  t        j                   |            }|j                  |      sJ t        j"                  t        j$                  d|i            j'                  d      j)                  d      }|j                  |      rJ  y )Nr   r}  __arrow_array__F)raising
2012-01-01r   Drf  r   r   r   r   )rF   rc   r   rS  rT  r?  setattrr/   r  PeriodArrayrV  IntervalArrayri  rj  rK   rd   r   rZ   r0   r%  rA  )monkeypatchrU  rV   ri   r[   s        r8   *test_array_protocol_pandas_extension_typesr`  h  su    hhyrxxz2G  --.@.BGLH		--/@2E  C		//1B2E  CacBHH!!!Q'--/ 	'#}}X&&&"))C.)}}X&&&"((3-(}}X&&&",,Sz23::3?EEaH}}X&&&	'rk   c                 \   t        |t        j                        r|}n|j                  d      }|j	                         }t        j                  |d   d      |j                  |j                  t        |      z    }|d   }|Tt        j                  j                  t        j                         t        |      d |g      }t        j                  |      }n$t        j                  t        |      t              }t        j                   j#                  |j%                         | d      }|S )Nr   rO  r   r   F)rs   )r   rF   r  rA  buffersr1   
frombufferoffsetr   BooleanArrayfrom_buffersr  r  r6  r"   r/   r  IntegerArrayrs   )r   rc   ri   buflistr   bitmaskrm   int_arrs           r8   _Int64Dtype__from_arrow__rk    s     %" kk!nkkmG==G4

3::C(*DajG++HHJC4/3zz$wws3xt,ii$$TYY[4%e$DGNrk   c                 z   t        j                  g dt        j                  g dd      g dd      }t        j                  |      }|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                  |      }|j                         }t        |      j                  d   j                  j                  t        j                         k(  sJ t        j                  ||       t        t         j                        t        d      k  r?| j!                  t         j"                  j$                  j&                  j(                  d       n>| j!                  t         j"                  j$                  j&                  j*                  d       |j                         }t-        t        |      j                        d	k(  sJ t        |      j                  d   j                  j                  t        j                  d      k(  sJ y )Nr   r|  r<  r   r  r  r   r   r   r   r  	1.3.0.dev__from_arrow__)r/   r0   rc   rF   rZ   rJ   r  r  rt   r   r1   
Int64DtyperS   rT   r   r@  delattrcorer  integer_IntegerDtypeNumericDtyper   )r_  rU   rZ   r[   r   rn  s         r8   test_convert_to_extension_arrayru    s     
bhhy@	
B HHRLE __FF""1%,,22bhhw6GGGGF""1%,,22bmmoEEE&"% ,,RXXl'BC
DCXXc]FFF""1%,,22bmmoEEE&#& r~~!55GGNN""002B	D 	GGNN""//1A	C __Fx&&'1,,,F""1%,,22bhhw6GGGGrk   c                   *     e Zd Z fdZd Zd Z xZS )MyCustomIntegerTypec                 J    t         |   t        j                         d       y )Nz-pyarrow.tests.test_pandas.MyCustomIntegerTyperA  rD  s    r8   rC  zMyCustomIntegerType.__init__  s    H	Jrk   c                      yrG  r?  r  s    r8   rH  z+MyCustomIntegerType.__arrow_ext_serialize__  rI  rk   c                 *    t        j                         S r  )r/   ro  r  s    r8   r  z#MyCustomIntegerType.to_pandas_dtype  s    }}rk   )r  r  r  rC  rH  r  rP  rQ  s   @r8   rw  rw    s    Jrk   rw  c                    t        j                  g dt        j                               }t         j                  j	                  t               |      }t        j                  d|i      }|j                         }t        |      j                  d   j                  j                  t        j                         k(  sJ t        j                  g dd      }t        j                   ||       |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  r?| j+                  t        j,                  j.                  j0                  j2                  d       n>| j+                  t        j,                  j.                  j0                  j4                  d       |j                         }t        |      j                  d   j                  j                  t7        j                  d      k(  sJ t        j                  g d      }t        j                   ||       t9        j:                  t<              5  |j                          d d d        y # 1 sw Y   y xY w)	Nr   r   r   r<  r   rm  rn  r   )rF   rc   r   rS  rT  rw  rZ   rJ   r  r  rt   r   r/   ro  rd   rS   re   r0   rT   r   r@  rp  rq  r  rr  rs  rt  r1   r   rK  rL  )r_  rU  ri   rZ   r[   rV   s         r8   /test_conversion_extensiontype_to_extensionarrayr|    s   hh|RXXZ0G



(
()<)>
HCHHc3Z E ]]_FF""1%,,22bmmoEEEyyW5H68,__FF""1%,,22bmmoEEE||S"((<w"GHIH&(+ r~~!55GGNN""002B	D 	GGNN""//1A	C ]]_FF""1%,,22bhhw6GGGGyy&H68,	z	"   s   ?KK"c            	         t        j                  dt        j                  g dt        j                               i      } | j	                         }|d   j
                  t        j
                  d      k(  sJ | j	                  t        j                         t        j                         ij                        }t        |d   j
                  t        j                        sJ t        j                  dt        j                  g dt        j                               i      } | j	                  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            } | j	                         }t        |d   j
                  t        j                        sJ | j	                  t        j                         t        j                  d      ij                        }t        |d   j
                  t        j                        sJ y )	Nr   r   r   types_mapperr   r<  r   r[  )rF   rZ   rc   r   rJ   r   r1   r/   ro  r  r   r   r0   PeriodDtype)rZ   r[   s     r8   'test_to_pandas_extension_dtypes_mappingr    s   HHc288Irxxz:;<E __F#; 1111 __288:r}}*G*K*K_LFfSk''777 HHc288Irxxz:;<E__288:r}}*G*K*K_LF#; 1111 HHR\\3'(J"KLME__FfSk''777__hhj".."56::  <FfSk''888rk   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      j                  d|i      }t
        j                  j!                  ||      }|j#                  t        j                        }t        j$                  j'                  ||       y )Nz1.5.2zTest relies on pd.ArrowDtyperf  Fr  ru  Tr   r   )rf  ru  r~  r~  )r   r/   r@  r   rs  rF   r  r   r  r    
ArrowDtyper;   r0   r1   rG  rH   rI   rJ   rZ  rT   )r  pd_typer;   df0rZ   r  s         r8   4test_to_pandas_extension_dtypes_mapping_complex_typer    s   r~~!1123iiHHUBHHJ7HHUBJJL48	
G mmG$GYY012F
,,DA78D./	

 feW  HH  V 4E
//r}}/
5CJJ!!#s+rk   c                  L   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                  |       j                         }t        j                  |       }t        j                  ||       t        j                  d	| i      d	   j                         }t        j                  | d	
      }t        j                  ||        y )Nz1.1z'ExtensionDtype to_pandas method missingrZ  r   r[  rf  r   r   r\   ra   )r   r/   r@  r   rs  ri  rc   rj  rF   rJ   rd   rS   re   rZ   )ri   r[   rV   s      r8   test_array_to_pandasr    s    r~~/=>acBHH!!!Q'--/ 1#((*99S>
vx05#,'.88:99Su-
vx01rk   c            
         t        j                  t        j                  dd            } t        j                  |       }t        t         j                        t        d      kD  r9t        j                  |j                         j                  | j                         y t        j                  |j                         j                  t        j                  dddddddddgd	
             y )Nr   r   )r;  endr   z1.0r   )r"  r#  r*   r@   r   )r/   r0   rj  rF   rZ   r   r@  rS   assert_index_equalrJ   r   r   rU   rZ   s     r8   5test_roundtrip_empty_table_with_extension_dtype_indexr  -  s    	B--A1=	>BHHRLEr~~/
eoo/55rxx@
eoo/55 hhQ(?12Q(?12Q(?(A .67	8rk   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                               
      j                  |       }|j                         }t        j                  |      }|j                  t        j                        }t        j                  ||       y )Nz1.5.0zArrowDtype missingr   r*   r   r   r   r   r  r   r~  )r   r/   r@  r   rs  r0   r  rF   r   r   rs   rZ   rJ   rS   rT   )r   rU   rV   rZ   r[   s        r8   !test_to_pandas_types_mapper_indexr  :  s    r~~!11()	QQQ	

 mmBHHJ'
 i  wwyHHHRLE__"--_8F&(+rk   c                     t        t        j                        t        d      k  rt        j                  d       t        j                  g dt        j                               } t        j                         t        j                         ij                  }| j                  |      }|j                  t        j                         k(  sJ t        j                         d ij                  }| j                  |      }|j                  t        j                  d      k(  sJ t        j                         t        j                         ij                  }| j                  |      }|j                  t        j                  d      k(  sJ y Nz1.2.0z$Float64Dtype extension dtype missingr   r~  r   )r   r/   r@  r   rs  rF   rc   r   ro  r  rJ   r   r1   r!   Float64Dtyper   r  r[   s      r8   !test_array_to_pandas_types_mapperr  L  s   r~~!11:;88Irxxz*D HHJ044L^^^6F<<2==?*** HHJ%))L^^^6F<<288G,,,, JJL"//"3488L^^^6F<<288G,,,,rk   c                  v   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                  |      }|j                  t        j                         k(  sJ t        j                         d ij                  }| j                  |      }|j                  t        j                  d      k(  sJ t        j                          t        j"                         ij                  }| j                  |      }|j                  t        j                  d      k(  sJ y r  )r   r/   r@  r   rs  rF   r  rc   r   r   rf  ro  r  rJ   r   r1   r!   r  r  s      r8   )test_chunked_array_to_pandas_types_mapperr  c  s2    r~~!11:;RXXi<=>DdBOO,,, HHJ044L^^^6F<<2==?*** HHJ%))L^^^6F<<288G,,,, JJL"//"3488L^^^6F<<288G,,,,rk   r  r   c                 d   t        t        j                        t        d      k  rt        j                  d       t        j                  ||       }|j                         }|j                  t        j                  t        j                        k(  sJ t        j                  |g|       }|j                         }|j                  t        j                  t        j                        k(  sJ | d ij                  }|j                  |      }|j                  t        j                  d      k(  sJ |j                  d      }|j                  t        j                  t        j                        k(  sJ |j                  d	      }|j                  t        j                  g d
      k(  sJ y )Nr  z#PyArrow backed string dtype missingr}  )na_valuer~  r@   Fr  Tr  )r   r/   r@  r   rs  rF   rc   rJ   r   StringDtyper1   rN   r  r  CategoricalDtype)r  r   ri   r[   r  s        r8   !test_array_to_pandas_string_dtyper  |  sE    r~~!119:
((4k
*C]]_F<<2>>266::::


D6
4C]]_F<<2>>266::::  &**L]]]5F<<288H---- ]]%]8F<<2>>266::::]]$]7F<<2.."7<> > > >rk   c                  F   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
                  j                  ||gd	dg      }|j                  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      }|j                         }	t        j                  |	|       t        j                  d| it        j                  d
ddd            }
t         j
                  j                  ||gd|g      }|j                  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      }|j                         }t        j                  ||
       t        j                  d	| it        j                  d
ddd             }t         j
                  j                  ||gd	|g      }|j                  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      }|j                         }t        j                  ||       t        j                  d	| it        j                  d
ddd      |g      }t         j
                  j                  |||gd	d|g      }|j                  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      }|j                         }t        j                  ||       t        j                  d	| it        j                  d
ddd       |g      }t         j
                  j                  |||gd	||g      }|j                  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      }|j                         }t        j                  ||       y )N)r   rf  Nru  )r   r   r   r   r7  r}  r  r   r   r  r   r   r   r*   rZ  r   r   r      pandasr/  r@   r0  r1  )rb   r  r#  r%  r&  z0.23.4)r  r"  rL   r  )rF   rc   r/   r0   r   rH   r   replace_schema_metadatajsondumpsrJ   rS   rT   )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                         r8   )test_metadata_compat_range_index_pre_0_12r    s\    +H#Hhhxf-Ghhxf-Ghh|':O$J$J 
X]]1aae4
6B 
		w8%(%L 
 
2B		#	#4::$g)-/309/7.8'-B	!D  E
 #&(+)2(0&*	,
 #((-)0(/&*	,	-  (!)
% 
B( 
B"b! 
x]]1aae4
6B 
		w8%*J$7 
 
9B		#	#4::)l)-/309/7.8'-B	!D  E
 #&(+)2(0&*	,
 #((2)0(/&*	,	-  (!)
% 
B( 
B"b! 
X]]1aad3
5B 
		w8%(*$5 
 
7B		#	#4::)l)-/309/7.8'-B	!D  E
 #&(+)2(0&*	,
 #'(2)0(/&*	,	-  (!)
% 
B( 
B"b! 
XmmAqqu5x@
BB 
		wA%(%$< 
 
>B		#	#4::$j1)-/309/7.8'-B	!D  E
 #&(+)2(0&*	,
 #((-)0(/&*	,
 #'(2)2(0&*	,-  (+)
% 
B2 
B"b! 
XmmAqqt4h?
AB 
		wA%(*j$A 
 
CB		#	#4::):6)-/309/7.8'-B	!D  E
 #&(+)2(0&*	,
 #'(2)0(/&*	,
 #'(2)2(0&*	,-  (+)
% 
B2 
B"b!rk   c                     g d} g d}t        j                  | d      }t        j                  |d      }t        j                  | |dt        j                  ddd	d
            }t        j
                  ||d      }|j                  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      }|j                         }t        j                  ||       y )Nr   )r   r   r   r  r   r}  r7  rF  r   r   r*   rZ  r   r   r  r@   zmixed-integer)r  r&  rb   r%  r#  r   )r&  rb   r%  r#  r   r/  r5   )kindrb   r;  r   r  z0.25.0)r"  rL   r  r  )rF   rc   r/   r0   r   rZ   r  r  r  rJ   rS   rT   )r  r  r  r  rV   rZ   r[   s          r8   'test_metadata_compat_missing_field_namer  G  s    H#Hhhxg.Ghhxf-G|| ]]1aae46H HH712E ))4::#!' /	1 "& ') "' )+	 !	 '3( 
+ E: __F&(+rk   c            	          t        j                  d      } t        j                  t	        j
                  t	        j                  dd|                   }|j                  j                  }|d   d   d   dk(  sJ y )	Nr   r   r   ra   r   r  rb   6)	r1   r   rF   rZ   r/   r0   r   r;   r  rb   rZ   r&  s      r8   .test_metadata_index_name_not_json_serializabler  z  s_    88A;DHHR\\a(FGHE||++HO$Q'/3666rk   c            	          d} t        j                  t        j                  t        j                  dd|                   }|j
                  j                  }|d   d   d   dk(  sJ y )Nr   r   r   ra   r   r  rb   )rF   rZ   r/   r0   r   r;   r  r  s      r8   -test_metadata_index_name_is_json_serializabler    sW    DHHR\\a(FGHE||++HO$Q'/1444rk   c            
      f   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
   j	                  d      | d
<   | j
                  j                  | j                  j                  ft        j                  d      t        j                  d      fk(  sJ | S )Nz0001-01-01 00:00rl  z2012-05-02 12:35z2012-05-03 15:42z3000-05-03 15:42z1991-01-01 00:00r5  z2050-05-03 15:42)
dateTimeMs
dateTimeNsr  r@   rV  zM8[ns])r/   r0   r1   rb  rG  r  r   r  r  s    r8   make_df_with_timestampsr    s    
MM,d3MM,d3MM,d3MM,d3	
 MM,d3MM,d3MM,d3MM,d3	
 
B ,'..x8B| MM!4!45
rxx):    Irk   c                    t               }t        j                  j                  |      }| dz  }t	        j
                  ||       t	        j                  |      }|j                  d      }t        j                  ||       y )Nztimestamps_from_pandas.parquetTtimestamp_as_object)
r  rF   rH   rI   pqwrite_table
read_tablerJ   rS   rT   )tempdirrU   rZ   filenamer[   r   s         r8    test_timestamp_as_object_parquetr    sj     
!	"BHH  $E99HNN5(#]]8$F


t

4C"c"rk   c                      t               } t        j                  j                  |       }|j	                  d      }t        j                  | |       y )NTr  )r  rF   rH   rI   rJ   rS   rT   )rU   rZ   r   s      r8   %test_timestamp_as_object_out_of_ranger    s@     
!	"BHH  $E
//d/
3C"c"rk   
resolutionr$  r   r9  r  i  i  c                 
   t        j                  |gt        j                  | |            }t        j                  d|i      }|j	                  d      |j	                  d      d   fD ]  }|j
                  t        k(  sJ t        |d   t              sJ |rJ|d   j                  J |j                  t        j                        j                  t        |            }n|d   j                  J |}|d   |k(  rJ  y )Nr  r}  r   Tr  r   r  )rF   rc   r  rZ   rJ   r   r@   r   r   r  rM   r   r  r  r	   )r  r   r  ri   rZ   r[   rV   s          r8   'test_timestamp_as_object_non_nanosecondr    s     ((B4bll:"=
>CHHc3Z E 	$/D1#6 % ||v%%%&)X...!9##///zzz6AA(2,OH!9##+++HayH$$$%rk   c            	      R   t        j                  d      } dd l}| j                  d      } |j                   |j                  ddddd            }t        j                  d	t        j                  |g      i      }|j                  d
      }t        j                  |      |k(  sJ y )Nr}  r   x   i  r   r  r  9   timestamp_colTr  )	r   r  r   r  r  rF   rZ   rc   rJ   )r}  r   r   r  rZ   r[   s         r8   %test_timestamp_as_object_fixed_offsetr    s    v&D$H			,8,,T1b"bA	BBHHorxx~67E___6F88Fu$$$rk   c                      t        d       y )Nzpandas_threaded_import.py)r   r?  rk   r8   test_threaded_pandas_importr    s    -.rk   c                     t        j                  d      } t        j                  t         j                        | k(  sJ t        j                  dt        j                         gi      }t
        j                  j                  |      }|j                          t        j                  t         j                        | k(  sJ y )Nm8r   )	r1   r   r7  r/   r0   rF   rH   rI   rJ   )rV   rU   r  s      r8   $test_does_not_mutate_timedelta_dtyper    s    xx~H88BNN#x///	sR^^-./	0B
R AKKM88BNN#x///rk   c                      ddl m}  d | dd      ig} | ddd	
      g}t        j                  ||d      }|j	                         }|d   d   j                         |d   k(  sJ y )Nr   )r   timedelta_1r  r   )rr  rD  r   (   r  )r  r~  rr  )r  timedelta_2r  )r   r   rF   rZ   rJ   to_pytimedelta)r   r  r  rZ   rU   s        r8   %test_does_not_mutate_timedelta_nestedr    sp     #!9Ra#HIJK1b"=>KHH[MNE		BmQ..0KNBBBrk   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      }|j                         }|j                  d      }t        j                  ||       t        j                  ||       t         j                  j                  || 	      }|j!                  |      sJ t         j                  j                  || 	      }|j!                  |      sJ y )Nr   r   )r   Nr*   s   abcr   r   s   defr~  r   r  strictmaps_as_pydicts)rF   r;   r   r  r6  r   r  r_  rZ   r/   r0   rJ   rS   rT   rH   rI   rK   )r;   rZ   expected_default_dfexpected_as_pydicts_df
default_dfas_pydicts_dftable_default_roundtriptable_as_pydicts_roundtrips           r8   ,test_roundtrip_nested_map_table_with_pydictsr    s   YY
HH	299bhhsBIIK.H-I#JK	
 F HH
#v #tC=12	
  	E ,,	}dq3-&8%9'(3+&6S&M8J%K%M N 	O  \\	YK#vc4[c6]!CD
 	 "JOOHO=M*&9:-)?@ hh22:f2M<</000!#!5!5mF!5!S<<2333rk   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                  j                  ddg| |      }t         j                  j                  g d||      }t         j                  j                  ddg||      }t        j                  t         j                  j                  ddg|      j                  d      t         j                  j                  ddg|j                  d            j                  d      t         j                  j                  ddg|      j                  d      g      }	|	j                         }
t        j                  dddgfdddgfggdd
dgfggg g      }|	j                  d      }t        j                  ddgddgdgdd
dgigg g      }|	j                  dd      }|j                         }t        j                  dd
dgfggg g      }|j                  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       t        j                  t        j$                  t        j                         t        j                  t        j                                           dt        j                  ddffd} ||
|	        |||	        |||        |||       y# 1 sw Y   xY w)z=
    Slightly more robust test with chunking and slicing
    r   rf  )ru  rZ  r3  r4  r   r   r   r  Nr(  r)  r5  r   r*   )r   r   r   r   r4  r  r  r   rf  r   rA   rB   r  returnc                     t        j                  t         j                  j                  |             }|j	                  d       |j                  |      sJ y )Nr}  Trm  )rF   r  r  rI   rp  rK   )r  r   array_roundtriprC  s      r8   assert_roundtripzMtest_roundtrip_nested_map_array_with_pydicts_sliced.<locals>.assert_roundtripl  sJ    **288+?+?R+?+PQ  d +{{?+++rk   )rF   rc   r  r  r<  r   r  r,  r;  rJ   r/   rd   rO   rP   rQ   rR   rS   re   r6  )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  rC  s                       @r8   3test_roundtrip_nested_map_array_with_pydicts_slicedr  )  s    XXuen%FXX34FXXb"))+&Fhh
sc3Z 
G hh	TD#;c
+
G hh

G
 ++))1a&&'BK++)))VWEK++))1a&&'BK$$
  !Q5;;A>
  !Q):):1)=>DDQG
  !Q5;;A>& M #,,.N ii3*
Sz2	343*
	
)  #,,X,FN iisS#J	/0
#s	
)    A&F",,.%'YY3*
	
0 &"
 #,,X,F%'YY
#s	
0 &"
 
	 	 	" V*I 2	4
~/FG
~/FG
46TU
46TUV 
"''"))+rxx		'<=	>B, ,T ,
 ^]3^]3*F3*F3%V Vs   %A4P>>Q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                  j                  || |      }t        j                  t        j                         t        j                  t        j                                     }t        j                  t         j                  j                        5  |j                  d
       d d d        |j                  d      }t        j                  ddgddgdg      }|j                  t         j                  j!                  ||            rJ |j                         }t        j                  dddgfdddgfdddgfgg      }|j                  t         j                  j!                  ||            sJ t#        |      t#        |      k(  sJ t%        ||      D ]y  \  }	}
t#        |	      t#        |
      k(  sJ t%        |	j'                         |
j'                               D ]0  \  }}|d   |d   k(  sJ t)        j*                  |d   |d         r0J  { t#        |      t#        |      k(  sJ t%        ||      D ]]  \  }	}
t#        |	      t#        |
      k(  sJ t%        |	|
      D ]0  \  }}|d   |d   k(  sJ t)        j*                  |d   |d         r0J  _ y # 1 sw Y   xY w)Nr8  r   r   r   r  r   r]  r   r   r  r  lossyr  r}  r   rf  r   )rF   rc   r  r  r<  r   r6  r   rK  r  ArrowExceptionrJ   r/   rd   rK   r  rI   r   r  r=  r1   array_equal)r  r=  rw  mapsrC  r  r  r  r  row1row2tup1tup2s                r8   4test_roundtrip_map_array_with_pydicts_duplicate_keysr  w  s   88)*DHH
sc3Z#s,
E !fG;;""7D%8D	bhhryy{3	4B 
rvv,,	- 1x01 ^^G^<N iic
C:.)  {{288//R/HIII ^^%N ii
#s	usCj1EC:3FG)  ;;rxx++N+DEEE
 ~#&=">>>>.*AB 4
d4yCI%%%djjlDJJL9 	4JD$7d1g%%%>>$q'47333	44 ~#&=">>>>.*AB 4
d4yCI%%%dD/ 	4JD$7d1g%%%>>$q'47333	44C1 1s   ;LLc            	         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                  j                  || |      }t        j                  t              5  |j                  d       d d d        |j                         }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        |      k(  sJ t        ||      D ]0  \  }}	t        j                  |d   |	d         sJ |d   |	d   k(  r0J  _ y # 1 sw Y   xY w)Nr   r   r   r  r(  r)  r5  rI  )r   rf  ru  rZ  r3  r4  )r   r*   r   r  r  r   rf  ru  rZ  r3  r4  r   r   )rF   rc   r  r  r<  r   r   rK  r  rJ   r/   rd   r   r  r1   r  )
r  r=  rw  r	  r  r  r
  r  r  r  s
             r8   %test_unhashable_map_keys_with_pydictsr    s   88
sc3ZcUT3K#sD
D HH@AEG;;""7D%8D 
y	! 0w/0
 ^^F ii*e	Sz512
euenc{F&;sCj%=PQ)  v;#56666&"9: &
d4yCI%%%dD/ 	&JD$>>$q'473337d1g%%%	&&0 0s    FFc                  B   t        j                  t        j                  ddd      d      } t        j                  dt        j
                  |       i      }|j                  d      }|j                         }|j                  dk(  sJ t        j                  ||        y )N2012r*   r   r  datetime_columnra   )r/   rd   r   rF   rZ   rc   r%  rJ   rb   rS   re   )r  rZ   	table_colr[   s       r8   )test_table_column_conversion_for_datetimer    s    
 YYr}}VQ;LM-/FHH'&)9:;E./I  "F;;++++66*rk   c                      t        j                  t        j                  ddd            } t        j                  |       }|j                         }t        j                  ||        y )Nr  r*   r   r  )r/   rd   r   rF   rc   rJ   rS   re   )r  ri   r[   s      r8   "test_array_conversion_for_datetimer    sI    
 YYr}}VQ;LMNF
((6
C]]_F66*rk   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      |       y )Nc                     t         j                  j                  | |      }|j                  d       |j	                  d      j
                  }|dkD  sJ t        j                  |j                  dd      |        y )Nr~  Trm  r   r   r  )r  r  )	rF   rH   rI   rp  r%  rg  rS   rT   rJ   )rU   r;   tabrg  s       r8   	roundtripz-test_nested_chunking_valid.<locals>.roundtrip  sr    hh""2f"5$ ZZ]--
A~~
cmm$<D , FGI	Krk      0i T*rU  struct_fieldr-  r  lossolr   r	  r~  r  )	r/   r0   rF   r6  r  r  r  r_  r;   )	r  r7   r  r  r  r  
map_of_losmap_typer;   s	            r8   test_nested_chunking_validr"    s?   K 	yAbllI1ay123a FbllI'?@ABCEbllGeUE%:;<=(CbllECc?3455
!CbllECc?345sJwwryy{xx		NBIIK+H*I JKMHYY*+,FbllFZZ$HIJrk   c                      t        j                  ddgddggddg      } t        j                  j	                  |       }|j
                  dd	gk(  sJ |j                         j                  |       sJ y )
Nr  r  r  g?s   col1s   col2r   r
  r  )r/   r0   rF   rH   rI   r   rJ   rK   r  s     r8    test_bytes_column_name_to_pandasr$    sl    	SzC:.'8J	KBHH  $E&&!1111??##B'''rk   c                  .    t        j                  d       y )Nzarrow_39313.py)	test_utilr   r?  rk   r8   !test_is_data_frame_race_conditionr'    s     ,-rk   c                  j   t        j                  dg di      } t        j                  d      | j                  d<   t        j                  t        d      5  t        j                  |       }d d d        t        j                  j                  j                  d         }|d   rJ y # 1 sw Y   =xY w)	Nr7   r   z2025-10-28T14:20:42r  z'Could not serialize pd.DataFrame.attrs:r.  r  
attributes)r/   r0   r   fromisoformatattrsr   r   r   rF   rZ   r  loadsr;   r&  )rU   df_tablepd_metadatas      r8   $test_json_unserializable_pd_df_attrsr/    s    	sI&	'B$223HIBHH[	7
   88B<	  **X__55i@AK<((((   s   B))B2)r  )NFNTNFF)NNr  r  )r   N)r  r   r  multiprocessingr  r  rO   r  collectionsr   r   r   r   r   r   r	   
hypothesisrI  hypothesis.strategies
strategiesrK  r   numpyr1   numpy.testingrZ  ry   r
   rO  r\  numpy.exceptionsImportErrorpyarrow.pandas_compatr   r   pyarrow.tests.utilr   r   r   pyarrow.tests.strategiestestsrM  utilr&  pyarrow.vendored.versionr   pyarrowrF   r   r  pandasr/   pandas.testingrS   pandas_examplesr   r   r  
pytestmarkr9   r]   rj   rv   r|   r~   r  r  r\  r^  r`  rR  r  r  r  r  r  r  r  rb  rk  ro  rs  r  r{  rJ  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  r_  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r"  r'  r0  r2  r4  r6  r:  r=  ExtensionTyper?  rV  r`  rk  ru  rw  r|  r  r  r  r  r  r  r  rV  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?  rk   r8   <module>rF     su  $ 
    
   # > >   " 

(*(D(D% @ A A ' ' & & , 	%	L [[
> <A,059+0%*	=>
& 8< $K0-_	4 _	4Db bJ	 IK.K.& IK,K,,N
$ N
$j~- ~-Be1 e1Pn	( n	(b`: `:F;4 ;4|BAd% d%N	 +. fXw$78< 9<7 !$ 	T11	23  4 #
1L "&1")60)4/0)6A"5WGtB*9,J((0) 	G	V	F	W	W	W	W	h	h	h	y!	y!	y!	f	f	g	!	g&	i 	("((8288:&	')<=	r1	y)	d	Z(	dE	"L1	3 	4&!1:.;:.:49><"-
=$:,	0
0",*.#b#-9h1Jh
)9X
--02,j($:))  I'4, HF
"** 
!H92,21
8 3c
"34, 5,"-. - -0 IBIIK!2NBNN4DE "tf.> /><f"R0,f756 	# 	## '89&89:q! 4htQ6JKL% M ; :%*	% / /	0
C*4ZK4\14h&B+	+ # #L( . .
)kg  
	
 	

  	B  		  		sT   
Z Y= Z Z) =ZZ ZZ ZZZ&%Z&)Z21Z2