
    eiW                    b   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
m	Z	mZmZmZ d dlZd dlmZ d dlZ	 d dlZd dlmZ 	 ej2                  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,m.Z/ 	 d dl0Z1d dl2mZ3 d	d
l4m5Z5m6Z6 ejn                  j`                  Z8ddZ9	 	 	 	 	 ddZ:ddZ;	 	 ddZ<ddZ= G d d      Z> G d d      Z?ejn                  j                  dg d      d        ZAejn                  j                  dg d      d        ZB G d d      ZC G d d      ZD G d d      ZE G d d      ZF G d  d!      ZG G d" d#      ZHd$ ZId% ZJ G d& d'      ZKd( ZLd) ZMejn                  j                  d*d+gd,gf      d-        ZNd. ZOd/ ZPd0 ZQ ej                   e'j                  e'j                              d1        ZUd2 ZVd3 ZWd4 ZXd5 ZYd6 ZZd7 Z[d8 Z\d9 Z]d: Z^d; Z_d< Z`d= Zad> Zbd? Zcd@ ZddA ZedB ZfdC ZgdD Zhejn                  j                  dE e-j                         dFf 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                         dSf e-j                         dTf e-j                  dUV      dTf e-j                         dWf e-j                   e-j                   e-j                                     dXf e-j                  dYdZ      d[f e-j                  d\      d]f e-j                  d^d_      d`f e-j                  da      dbf e-j                  d^      dbfg      dc        Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr ZddsZdt Zdu Zdv Zdw Zdx Zdy Z G dz d{e-j,                        Zdd|Zd} Zd~ Zd Z G d de-j,                        Zd Zd Zd Zd Zd Zejn                  j                  ddddgg      d        Zd Zejn                  j`                  d        Zd Zd Zd Zd Zd Zejn                  j\                  d        Zd Zejn                  j                  dg d      ejn                  j                  dddg      ejn                  j                  d e	dd	d	       e	dd	d	      g      d                      Zd Zejn                  j\                  d        Zd Zd Zd Zd Zd Zd Zd Zd Zejn                  jp                  d        Zd Zejn                  j\                  d        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)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     [/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/pyarrow/tests/test_pandas.py_alltypes_exampler8   C   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   replacer0   nanwarningscatch_warningsfilterwarningsDeprecationWarningtmassert_frame_equal)dfexpectedr>   expected_schemarC   r:   r;   as_batchklasstableresultcols               r7   _check_pandas_roundtripr\   b   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rH   typename)	rE   arrayr_   r.   SeriesrI   ra   rR   assert_series_equal)stype_expected_pa_typearrrZ   s        r7   _check_series_roundtripri      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)rH   maskr_   r?   Fcheck_names)rE   rb   rI   r.   isnull
null_countsumrc   copyr   rL   r0   rM   rR   rd   )valuesrU   rl   r_   rh   rZ   values_nullss          r7   _check_array_roundtripru      s    
((6t$T
BC]]_F99V$L|~~!1!1!3333~~$"5!:!:!<<<<<yy(Hyy(--/H$(HTYY[!>>X%''7H299V,hEJrj   c                     t        j                  | d|      }|j                         }t        j                  ||        y )NTr^   rE   rb   rI   nptassert_array_equal)np_arrayr_   rh   rZ   s       r7   "_check_array_from_pandas_roundtripr{      s/    
((8D
9C]]_F68,rj   c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej*                  j-                  d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$d! Z%d" Z&d# Z'd$ Z(ej*                  jS                  d%e*jV                  e*jX                  e*jZ                  e*j\                  g      d&        Z/d' Z0d( Z1d) Z2d* Z3d+ Z4y,)-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.   r/   rE   rG   rH   fieldra   selfrT   rY   s      r7   test_non_string_columnsz+TestConvertMetadata.test_non_string_columns   sD    \\1i.)$$R({{1~""c)))rj   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rU   r;   )r.   r/   	set_indexpytestwarnsUserWarningrE   rG   rH   r   ra   rr   r+   indexr\   )r   rT   rY   rU   s       r7   "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   rK   )r.   r/   rE   rG   rH   rJ   rF   )r   rT   rY   rU   record_batch_tablerecord_batch_expecteds         r7   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$++,>???rj   c                 t    t        j                  dg di      }dg|j                  _        t	        |d       y )Ndatar   aTr;   )r.   r/   rK   namesr\   r   rT   s     r7   %test_column_index_names_are_preservedz9TestConvertMetadata.test_column_index_names_are_preserved   s-    \\69-.5

48rj   c           	          t        j                  t        j                  j	                  dd      t        j
                  dddd            }t        |d	       y )
Nr   r   z
2021-01-0150DCET)periodsfreqtzr   Tr   )r.   r/   r0   r2   r3   
date_ranger\   r   s     r7   test_column_index_names_with_tzz3TestConvertMetadata.test_column_index_names_with_tz   sB     \\IIOOAq!MM,%P
 	 48rj   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   )rK   r   Tr   )r.   r/   decimalDecimal
MultiIndexfrom_productr\   r   s     r7   $test_column_index_names_with_decimalz8TestConvertMetadata.test_column_index_names_with_decimal   s    \\ooa '//!"456MM..//!$%(:GOOA<N'OP ??1%&
 	 48rj   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)   stepra   r   r   r   r      r   r   r   )r.   r/   
RangeIndexrE   rG   rH   lenr:   rI   rR   rS   
isinstancer   r   get_rangeindex_attributera   )r   
index_namerT   df2rY   table_no_index_namerZ   result2s           r7   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}}!!)))rj   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.   r/   r   rE   rG   rH   num_columnscolumn_namesrI   rR   rS   )r   rT   rY   restoreds       r7   $test_range_index_force_serializationz8TestConvertMetadata.test_range_index_force_serialization  s     \\3- "a GI $$R$=  A%%%*****??$
h+rj   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actionr@   make_block is deprecatedTr   )r.   r/   r0   r2   r3   rN   rO   simplefilterrP   rQ   r\   r   s     r7   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_arraysr/   r\   r   rK   rT   s      r7   test_multiindex_columnsz+TestConvertMetadata.test_multiindex_columns$  sE    --++ENS#J-
  \\8'J48rj   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   DatetimeIndexr/   r\   r   s      r7   #test_multiindex_columns_with_dtypesz7TestConvertMetadata.test_multiindex_columns_with_dtypes+  sa    --++  ,!=> i( , 
 \\8'J48rj   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.   r/   Indexr?   r\   r   r   s     r7   (test_multiindex_with_column_dtype_objectz<TestConvertMetadata.test_multiindex_with_column_dtype_object6  s    
 \\1#rxx6'BC48 \\1#rxxV'DE48 \\1#rxxdAq!"((4 548rj   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      r7   test_multiindex_columns_unicodez3TestConvertMetadata.test_multiindex_columns_unicodeH  s>    --++eU^c3Z,HI\\8'J48rj   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   r@   r   Tr   )
r.   r   r   r/   rN   rO   r   rP   rQ   r\   r   s      r7   test_multiindex_doesnt_warnz/TestConvertMetadata.test_multiindex_doesnt_warnM  s    --++eU^c3Z,HI\\8'J$$& 	=!!1 ##46H $Bt<	= 	= 	=s   ?BB$c                 L    t        j                  g d      }t        |d       y )Nr   Tr   r.   r/   r\   r   s     r7   test_integer_index_columnz-TestConvertMetadata.test_integer_index_column\  s    \\8948rj   c                 p    t        j                  g ddt        j                  g      }t	        |d       y )Nr         ?r   Tr   )r.   r/   r0   rM   r\   r   s     r7   $test_float_column_index_with_missingz8TestConvertMetadata.test_float_column_index_with_missing`  s%    \\83-P48rj   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     r7   %test_string_column_index_with_missingz9TestConvertMetadata.test_string_column_index_with_missingd  s#     \\83+N48rj   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   rK   Tr   rK   ra   r   
field_namerM   Noner   index_columns)r.   r/   r   r   r   uses_string_dtyperE   rG   rH   r   r   r   r:   pandas_metadatar0   isnan)r   rT   tjscol1col2col3idx0r   
idx0_descr	foo_descrs              r7   test_index_metadata_field_namez2TestConvertMetadata.test_index_metadata_field_namek  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'''5B Bs   "FF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_indexesra   pandas_typecategorical
numpy_typer   metadatanum_categoriesr   orderedF)	r.   r/   r   listrE   rG   rH   r:   r  r   rT   r  r  r  mds         r7   test_categorical_column_indexz1TestConvertMetadata.test_categorical_column_index  s    \\9HHT%[
;
 HH  D 9XX%%-.f%---m,===l+v555J'"#q((()}%%%rj   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  stringzr`   r   Tr   r  ra   r   r  r+   r?   r  unicoder  r   encodingUTF-8)r.   r/   r   r  rE   rG   rH   r:   r  r   r   r   r  s         r7   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!||*~(((rj   c                 2   t        j                  g dt        j                  d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 y )Nr  
2017-01-01r   America/New_Yorkstartr   r   r   Tr   r  ra   r  
datetimetzr  r&   r  r   )r.   r/   r   rE   rG   rH   r:   r  r  s         r7   test_datetimetz_column_indexz0TestConvertMetadata.test_datetimetz_column_index  s    \\9MM"A2D
 HH  D 9XX%%-.f%---m,<<<l+/????J'*~!3333rj   c                     t        j                  dt        j                  ddd      i      }|j                  d      }t	        |d       y )Nr   r"  r   r#  r$  Tr   )r.   r/   r   r   r\   r   s     r7   test_datetimetz_row_indexz-TestConvertMetadata.test_datetimetz_row_index  sE    \\"A2D
 
 \\#48rj   c                     t        j                  g dg dd      }|j                  j                  d      |d<   |j	                  d      }t        |d       y )Nr   r   r   r  r   Tr   )r.   r/   r   astyper   r\   r   s     r7   test_categorical_row_indexz.TestConvertMetadata.test_categorical_row_index  sC    \\		:;$$++j)3\\#48rj   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.   r/   r  r   raises
ValueErrorrE   rG   rH   r   s     r7   *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   )
rE   DictionaryArrayr   rF   rG   from_batchesr   r0  
IndexErrorrI   )r   indicesindsrh   batchrY   s         r7   #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     r7   *test_unicode_with_unicode_column_and_indexz>TestConvertMetadata.test_unicode_with_unicode_column_and_index  s%    \\55'*5':48rj   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   r+  r      a2r   r   Tr   )r.   r/   r   r?   rK   r   r   r   rE   rG   rH   rr   rs   r,  r+   r\   )r   rT   colsrU   s       r7   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                 *   t        d      t        t        j                        cxk  rt        d      k  rn nt        j                  d       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 )	N2.0.03.0.0Regression in pandas 2.0.0r   r   Tr   r   )r   r.   __version__r   skipencoder/   rE   rG   rH   rI   rs   r   rK   )r   column_datakeyr   rT   r  r   s          r7   test_binary_column_namez+TestConvertMetadata.test_binary_column_name  s    7wr~~6I9II KK45glln[!\\$ HH  D 9kkmyy|szz!},,,xxq!SYY%5%5a%8888zz!}###rj   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  r4   r.   r   r   r/   r\   )r   num_rowsrS  r   rT   s        r7    test_multiindex_duplicate_valuesz4TestConvertMetadata.test_multiindex_duplicate_values  s_    uX'))"G,^, * 

 \\9g.e<48rj   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mixedrK   r   r  bytesr  r?   r.   r/   rE   rG   rH   r:   r  )r   rT   rY   r  data_columns        r7   test_metadata_with_mixed_typesz2TestConvertMetadata.test_metadata_with_mixed_types&  s    \\6M>#BCD$$R(\\))b   mA&=)W444<(H444rj   c                 @   t        j                  g dg ddg d      }t        j                  j	                  |      }|j                  d      }|j                  |j                  j                               j                         }t        j                  ||       y )Nr   r   rP  bazr+  )r   r   threer   T)ignore_metadata)r.   r/   rE   rG   rH   rI   castr:   remove_metadatarR   rS   )r   rT   rY   rZ   rU   s        r7   test_ignore_metadataz(TestConvertMetadata.test_ignore_metadata/  sv    \\	0EF 79$$R(6JJu||;;=>Y[ 	 	fh/rj   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:   rX  rK   r   r  zlist[int64]r  r?   )
r.   r/   rE   r:   r   list_r   rG   rH   r  )r   rT   r:   rY   r  r[  s         r7   test_list_metadataz&TestConvertMetadata.test_list_metadata:  s    \\6QCQC!G#<=>BHHV"((288:2FGHI$$R$7\\))b   mA&=)]:::<(H444rj   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)   r+  r   r   rK   r   r  r?   rZ  )r   rT   rY   r  s       r7   test_struct_metadataz(TestConvertMetadata.test_struct_metadataD  sd    \\711%5QQ7G$HIJ$$R(,,66y)!,];xGGGrj   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.12343437128rX  rK   r   r  r   r  r?   r        	precisionscale)	r.   r/   r   r   rE   rG   rH   r:   r  )r   rU   rY   r  r[  s        r7   test_decimal_metadataz)TestConvertMetadata.test_decimal_metadataJ  s    << =>!>??!
  $$X.\\))b   mA&=)Y666<(H444:&R*HHHHrj   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)   rg  rh  rK   r   r  r   r  rs  )
r.   r/   r   r   rE   r:   r   rG   rH   r  )r   rw  rT   r:   rY   col_metas         r7   test_decimal_other_bitwidtsz/TestConvertMetadata.test_decimal_other_bitwidtsY  s     \\3!8 9:;BHHSs1ay9:;$$R$7<<//	:1=&)333
#Q'CCCCrj   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   r`   r"  r   Europe/Brusselsr   r   r   皙?皙?333333?r+  r   r   r   Tdrop)r.   r   r   r/   rE   rG   rH   remove_columnrI   r   r   r   r   rR   rS   reset_index)r   r   rT   rY   table_subsetrZ   rU   table_subset2s           r7   !test_table_column_subset_metadataz5TestConvertMetadata.test_table_column_subset_metadatag  s    w7lA:KLN 	LE I$029>@BHH((,E ..q1L!++-F3%yH"((B$4$45 $!!&(3(66q9M",,.F!!&"cU)*?*?T*?*JK!	Lrj   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.   r/   r  r4   r0   r1   rE   rG   rH   r   selectrI   rR   rS   )r   rT   rY   subsetrZ   rU   s         r7   '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/rj   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   c1rg  c2rK   r?   zlist[unicode])ra   r   r  r  r  zlist[empty])r   rE   rb   ri  stringrF   r   r  rs   keysrG   r8  rI   rH   r:   r  r.   r/   rR   rS   )r   r  r  arraysrbtblrT   tbl2md2r   rU   s              r7   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~" &. " &,"
 
 	
 
rj   c                     t        j                  g dg dd      }t        j                  j	                  |      }|j
                  j                  d   J y )Nr   r+  pandas_versionrZ  r   s      r7   test_metadata_pandas_versionz0TestConvertMetadata.test_metadata_pandas_version  sE    \\		:;$$R(||++,<=IIIrj   c                    t        j                  dt        j                  dd      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 )
Nr   z
2020-01-01r   r   nsUTCr   r   rh  )r.   r/   r   rE   rG   rH   rb  	timestamp
set_columnr   r_   r:   rr   dttz_localizer  rI   rR   rS   )
r   rT   rY   new_col
new_table1r:   
new_table2rU   	new_tablerZ   s
             r7   test_mismatch_metadata_schemaz1TestConvertMetadata.test_mismatch_metadata_schema  s/   
 \\:r}}\1'MNO $$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	4rj   N)5__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markrP   r   r  r  r   r'  r)  r-  r2  r=  r?  rD  rN  rU  r\  rd  rj  rm  rv  parametrizerE   	decimal32	decimal64
decimal128
decimal256r{  r  r  r  r  r   rj   r7   r}   r}      s:   *
9 
@9
9	9*6,=9	99$9
=99 [[I99'(R&")*4$99%
"9
="$&
95	05HI [[U



	% DDL*0*
XJ
4rj   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f8d   rV   )rE   float16r   r    r0   r2   r3   r,  appendr   r.   r/   r:   r\   )
r   r   fieldsdtypes
num_valuesnumpy_dtypearrow_dtypers   rT   r:   s
             r7   test_float_no_nullsz-TestConvertPrimitiveTypes.test_float_no_nulls  s    &&&( 
(. 	>$KYY__Z0F &k :DMM"((;<=	>
 \\$6"F;rj   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   
   r5   r   r  r  r  )r  r  r  T)rH   rl   r   )r0   r2   randintrE   r  r   r    r3   r,  rb   r  r   rM   r.   r/   dictziprG   r   r:   rJ   rI   rR   rS   )r   r  	null_maskr  r   expected_colsr  r  ra   r  rs   rh   ex_framerY   rZ   s                  r7   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/rj   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:   r6  r   r   r)   N)r.   r/   r0   rM   rE   r:   r   r   rG   rH   	to_pylistrR   rS   rI   r   rT   r:   rY   s       r7   test_float_nulls_to_intsz2TestConvertPrimitiveTypes.test_float_nulls_to_ints  s    \\3c266 234BHHS"((*tDEF$$RU$CQx!!#|333
b%//"34rj   c                     t        j                  g d      }t        j                  g d      }t        ||t        j                                y )N)        r   r   Ng      )FTTNTrU   r_   )r.   rc   ru   rE   bool_r   re   rU   s      r7   test_float_nulls_to_booleanz5TestConvertPrimitiveTypes.test_float_nulls_to_boolean  s2    II1299<=q8"((*Erj   c                     t        j                  dt        j                  g      }t	        j
                  |d      }|j                  dk(  sJ t        j                  |d   j                               sJ y )Nr  FrH   r   r   )	r.   rc   r0   rM   rE   rb   rp   r  as_py)r   re   rh   s      r7   'test_series_from_pandas_false_respectedzATestConvertPrimitiveTypes.test_series_from_pandas_false_respected  sV    IIsBFFm$hhqe,~~"""xxA'''rj   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  r5   r   r  )r   rE   r   r   r   r   r   r   r   r   r0   iinfor2   r  maxminint_r,  r  r   r.   r/   r:   r\   )r   r   r  numpy_dtypesr  r   r  infors   rT   r:   s              r7   test_integer_no_nullsz/TestConvertPrimitiveTypes.test_integer_no_nulls!  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;rj   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   r0   r1   r.   r/   r\   rs   rE   rb   r  tolist)r   r   r  r   rT   np_arrrh   s          r7   test_all_integer_typesz0TestConvertPrimitiveTypes.test_all_integer_types:  s    }A " 	5E))Be4DK	5\\$# kkm 	6F((6"C==?fmmo555	6rj   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)   )
r0   rb   r   isnativerE   r  r  r   r0  NotImplementedError)r   
int_dtypesr  orderr   r  rh   s          r7   test_integer_byteorderz0TestConvertPrimitiveTypes.test_integer_byteorderK  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   rl   r  r   )r0   r2   r  rE   rb   r  r,  rM   r.   r/   r  r  rG   r   rI   rR   rS   )r   r
  r  r  r  r  ra   rs   rh   rU   r  rY   rZ   s                r7   test_integer_with_nullsz1TestConvertPrimitiveTypes.test_integer_with_nullsY  s     F

II%%a*%=A	 		+DYY&&q#J&?F((6	2CMM#}}T*H"$&&HY  *		+ <<S]%C D(24 $$VZ8"
fh/rj   c                     t        j                  dd      }t        j                         }t        j                  ||      }t        j                  |j                  d            }|j                  |      sJ y )Nr  r   r   rg  r   )r0   r1   rE   r   rb   r,  rJ   )r   rh   target_typerZ   rU   s        r7    test_array_from_pandas_type_castz:TestConvertPrimitiveTypes.test_array_from_pandas_type_castv  sV    ii'*ggi#K088CJJv./}}X&&&rj   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  )r0   r2   seedr.   r/   r3   rE   r   r  r:   r\   )r   r  rT   r   r:   s        r7   test_boolean_no_nullsz/TestConvertPrimitiveTypes.test_boolean_no_nulls  sl    

		q\\7BIIOOJ$?!$CDE"((*-E7#F;rj   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  )r0   r2   r  r  rE   rb   r,  r?   r   r  r:   r.   r/   rG   r   rJ   rI   rR   rS   )r   r  rl   rs   rh   rU   r   r:   r  rY   rZ   s              r7   test_boolean_nullsz,TestConvertPrimitiveTypes.test_boolean_nulls  s   

		qyy  BZ 81<""1bz":Q>hhvD)==("((*-E7#<<( 34$$cUWI6||""6***"
fh/rj   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.   rc   ru   rE   r   r  s      r7   test_boolean_to_intz-TestConvertPrimitiveTypes.test_boolean_to_int  s;    II59:99_q01q8"((*Erj   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.   rc   r?   r   r0  rE   ArrowTypeErrorru   r   )r   re   rU   expected_msgs       r7   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.   rc   ru   rE   r    r  s      r7   test_boolean_nulls_to_floatz5TestConvertPrimitiveTypes.test_boolean_nulls_to_float  s<    II59:997!;<q8"**,Grj   c                 v    t        j                  t        j                  dd      ddg      }t	        |       y )N)r   r)   r!   r   r   r   r   )r.   r/   r0   onesr\   r   s     r7   test_boolean_multiple_columnsz7TestConvertPrimitiveTypes.test_boolean_multiple_columns  s)    \\"''&7#sL#rj   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rU   rV   )r0   rb   r    r?   r.   r/   
to_numericrE   r   r:   r\   r   rh   rT   rU   r   r:   s         r7   test_float_object_nullsz1TestConvertPrimitiveTypes.test_float_object_nulls  s    hhc2::c?3a7vF\\8S/*<<2==+= >?2::<0E7#X06	8rj   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   rg  )Nr   r)   N	has_nullsFr:   r;   r   )r.   rc   r0   rM   rE   r   r   r   r   r   r   r   r   rb   rJ   r/   r:   r   rG   rH   chunk)r   re   typestyrZ   rU   rT   r:   s           r7   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		7rj   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*  )r0   rb   r   r?   r.   r/   r+  rE   r   r:   r\   r,  s         r7   test_int_object_nullsz/TestConvertPrimitiveTypes.test_int_object_nulls  s    hha!-1@\\63-(<<s); <=,E7#X06	8rj   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  )
r0   rb   r?   r.   r/   rE   r   r  r:   r\   )r   rh   rT   r   r:   s        r7   test_boolean_object_nullsz3TestConvertPrimitiveTypes.test_boolean_object_nulls  sZ    hh*S0?\\7C.)"((*-E7#F;rj   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 )Nrg  r   )rE   rb   r_   r  )r  a2rh   s     r7   _check_typezJTestConvertPrimitiveTypes.test_all_nulls_cast_numeric.<locals>._check_type  s9    #A&B77a<<a5;;=(((rj   )r0   rb   r?   rE   r   r    )r   r=  rh   s     @r7   test_all_nulls_cast_numericz5TestConvertPrimitiveTypes.test_all_nulls_cast_numeric  s8    hhvV,	)
 	BHHJBJJL!rj   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   rg  Tr_   rH   )	r0   rb   rM   r  rE   r  r   floatr  )r   rh   r   r6   ys        r7   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yrj   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r$  r'  r-  r4  r7  r9  r>  rC  r  rj   r7   r  r    sy    <"0<5F
(<26"10:'<0.FJH$
87"8<	"rj   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)
r0   r2   r  rE   rb   anyr,  rI   testingassert_equal)r   r  r  rs   rb   rU   rZ   s          r7   &test_array_integer_object_nulls_optionrL    s     J		!!!Rj!9A=IYYq#JeDFHHV),E}}==%"__$_7FJJFH-rj   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 rE  )r0   r2   r  rE   rb   rI  r,  r.   r/   rG   r   rI   rR   rS   )r   r  r  rs   rb   rU   rY   rZ   s           r7   &test_table_integer_object_nulls_optionrN    s     J		!!!Rj!9A=IYYq#JeDFHHV),E}}==%"||UH-.HHH  %5'2E__$_7F&(+rj   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   r  r  	r.   r/   r0   rb   rE   r   r  r:   r\   r   rT   r   r:   s       r7   #test_timestamps_notimezone_no_nullsz@TestConvertDateTimeLikeTypes.test_timestamps_notimezone_no_nulls0  f    \\"(( $1 '	(
  r||D'9:E7#"	
rj   c                     t        j                  dt        j                  g dd      i      }t	        j
                  dt	        j                  d            }t	        j                  |g      }t        ||       y )NrR  )rS  NrU  r&   r   r  r  rV  rW  s       r7    test_timestamps_notimezone_nullsz=TestConvertDateTimeLikeTypes.test_timestamps_notimezone_nulls?  rY  rj   unit)re   msusr  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 )NrF  r  z0pandas < 2.0 only supports nanosecond datetime64rR  )2007-07-13T01:23:34.1232006-01-13T12:34:56.4322010-08-13T05:46:57.437zdatetime64[]r   
US/EasternrS  NrT  rU  )r   r.   rI  r   rJ  r/   r0   rb   r  r  r\   ri   )r   r\  rT   s      r7   test_timestamps_with_timezonez:TestConvertDateTimeLikeTypes.test_timestamps_with_timezoneN  s    2>>"WW%55$$,KKJK\\"(( $+ $D6+	-
  l+..::<H<#< 01 \\"(( $1
 $D6+-
  l+..::<H<#rj   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%   )r4   r   todayr   r.   r/   rc   r?   rE   rG   rH   r   r1  TimestampArrayrI   rR   rS   )r   r6   
date_arrayrT   rY   rZ   expected_dfs          r7   test_python_datetimez1TestConvertDateTimeLikeTypes.test_python_datetimek  s    DI"INqhnn&)::N
N\\		*F;
  $$R(%(..+R->->???" ll		*4DE$
  	k62 Os   (Dc           
          t        j                  d      }|j                  |j                  d      |j	                  d      fD ]7  }t        dddddd|      g}t        j                  d	|i      }t        |       9 y )
Npytzrd  r   r   r     -   tzinfor   )	r   importorskiputcr   FixedOffsetr   r.   r/   r\   )r   ro  r   rs   rT   s        r7   %test_python_datetime_with_pytz_tzinfozBTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_tzinfo~  st    ""6*88T]]<8$:J:J1:MN 	(BtQ2r2bABFz623B#B'	(rj   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  rp  rq  rr  r   FrC   )r+   r   rJ  r   r.   r/   r\   )r   r   rs   rT   s       r7   'test_python_datetime_with_pytz_timezonezDTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_timezone  sT     r788KK:;4Ar2r"=>\\:v./6rj   c           	         t        j                  d      }ddlm} t        dddddd|j                  	      g}t        j                  d
|i|      }t        |d       d} |t        |            }|j                  |dz        }t        dddddd|	      g}t        dddddd|	      g}t        j                  d
|i|      }t        j                  d
|i|      }	t        ||	d       y )Nro  r   )r   r   r   r  rp  rq  rr  r   r   Tr   )hours<   r   )
r   rt  r   r   ru  r.   r/   r\   r   rv  )
r   ro  r   rs   rT   r~  tz_timezonetz_pytz
values_expdf_exps
             r7   )test_python_datetime_with_timezone_tzinfozFTestConvertDateTimeLikeTypes.test_python_datetime_with_timezone_tzinfo  s    ""6*%4Ar2r(,,GH\\:v.f=48 yu56""52:.4Ar2r+FGtQ2r2gFG
\\:v.f=z:6jIVDIrj   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  rj   r7   
MyDatetimer    s    Jrj   r    r   r   r   r   r%   )r   r.   r/   rc   r?   rE   rG   rH   r   r1  rj  rI   to_datetimerR   rS   )r   r  rk  rT   rY   rZ   rl  s          r7   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2rj   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  rj   r7   MyDater    s    rj   r  r  r   r   r   r   )r   r.   r/   rc   r?   rE   rG   rH   r   r1  Date32ArrayrI   r0   rb   rR   rS   )r   r  rk  rT   rY   rZ   rl  s          r7   test_python_date_subclassz6TestConvertDateTimeLikeTypes.test_python_date_subclass  s    	T 	 T1a()
\\6299Zv#FGH$$R(%(..+R^^<<<"llRXXtD!Q/0?@
 	k62rj   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  rp  rg  date32)
rE   rb   r   chunked_arrayrI   ArrayrH   r  rJ   rb  )r   rh   r   re   arr2s        r7   test_datetime64_to_date32z6TestConvertDateTimeLikeTypes.test_datetime64_to_date32  su    hhT2r*D12cU#KKMxx##ABIIK#8{{388H-...rj   rl   )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_   rl   r   r   r  rr  r  rl   r_   )
r0   rb   r.   r  rE   r  rH   date64r   rJ   )r   rl   re   rh   r   rU   s         r7   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(###rj   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)   rq  )
2000-01-01Nz
1970-01-01z
2040-02-26datetime64[D]r   rF  r&   coerce_temporal_nanosecondsFdate_as_objectr  )r   r0   rb   r   r.   rI  rE   r  rI   r,  r?   r   rx   ry   )
r   coerce_to_nsexpected_dtyper   expected_daysrU   objectsobjrZ   expected_objs
             r7   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		5rj   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)   rq  Fr   r  Tr{  )
r.   r/   r   rE   rG   rH   rI   rR   rS   r,  )r   r  expected_typerT   rY   df_datetime	df_objects          r7   !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)>rj   
arrow_typere   r]  r^  r  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  r  )r   r   r.   rc   rE   rb   rb  rI   hasattrr   r  to_pandas_dtyperR   rd   r,  )r   r  r   rU   rh   rZ   expected_tzr  s           r7   &test_array_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_array_coerce_temporal_nanoseconds'  s     T1a (4A"6799T?hhtn!!*-(,U  D:t$)BKT;7GGI
vx}'EFrj   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   rh  TFr  r   r  r  )r   r   rE   r:   r   r.   r/   rY   rb   rI   r  r   r  r  rR   rS   r,  )	r   r  r   r:   rl  rY   	result_dfr  r  s	            r7   &test_table_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_table_coerce_temporal_nanoseconds9  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Krj   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)   rq  Fr   r  )r.   r/   r   rE   rG   rH   r   r  r:   r  rJ   rI   rR   rS   )r   rT   rY   r   rV   rZ   s         r7   test_date_inferz,TestConvertDateTimeLikeTypes.test_date_inferL  s    \\T$1%$1%$2&() *
 $$R$>- ))UGell6K6KL||""?333"
fb)rj   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  )r0   rb   r   rE   rJ   )r   rh   rl   rZ   rU   s        r7   test_date_maskz+TestConvertDateTimeLikeTypes.test_date_mask\  s    hhT1a($tQ*:;,.e}#BHHTN388T4a#34OL88H$7v&&&rj   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  r4  lC  mC  r   r    \&)FTFFrg  r  r  r  )z
2017-04-03
2017-04-04r  z
2017-04-05r  r   r$   )r  r  r   F)r  r?   )r0   rb   r   r?   r,  rE   r  r  rJ   rG   r   r.   NaTr  r/   rI   rR   rS   )r   rh   arr_i4arr_i8rl   t32t64a32a64a32_expecteda64_expectedcolnamesrY   	ex_valuesex_datetime64msexpected_pandastable_pandastable_pandas_objects
ex_objectsexpected_pandas_objectss                       r7   test_date_objects_typedz4TestConvertDateTimeLikeTypes.test_date_objects_typede  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	7rj   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.   r0   rb   r   r  r?   rE   rJ   rp   r_   null)r   pd_NArs   values_with_nonerZ   rU   s         r7   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Drj   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  rg  r  r   r   r   )rE   r  r  r0   rb   r,  r   r  )r   t1t2rh   r  a1r<  rU   s           r7   test_dates_from_integersz5TestConvertDateTimeLikeTypes.test_dates_from_integers  s    YY[YY[hh,G<zz'"X-XXc#XXd$a#!u{{}(((!u{{}(((rj   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   r^  r   r   timesr   rg    r  r  r]  microsecond@B re   )r   rE   time64r0   rb   r?   r_   r  r.   r/   rF   rH   rJ   _pytime_to_microsr,  time32rL   )r   pytimesr  aobjsparrrT   r<  vrh   r  r<  a3a4s                r7   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   FFTr^  r  r  r  r]  r  re   )
time64[us]z
time64[ns]
time32[ms]z	time32[s]r   )r   r0   rb   rL   r  r!   rE   r  r,  r  rF   r   rI   rs   allr.   r/   rR   rS   )r   r  rU   r6   expected_ms
expected_sr  rh   r  r  r<  r  r  r   r<  expected_valuesresult_pandasrT   rl  s                      r7   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 )
Nre  r&   r   )z2007-07-13T01:23:34.123456Nz2006-01-13T12:34:56.432539z2010-08-13T05:46:57.437699r%   )r`  Nra  rb  r$   )z2007-07-13T01:23:34Nz2006-01-13T12:34:56z2010-08-13T05:46:57r#   r0   rb   r{   )r   datetime64_nsdatetime64_usdatetime64_msdatetime64_ss        r7   test_numpy_datetime64_columnsz:TestConvertDateTimeLikeTypes.test_numpy_datetime64_columns  s     "-
 #$ 	+=9 "*
 #$ 	+=9 "'
 #$ 	+=9xx !#
 "# 	+<8rj   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 )NrF  z0pandas >= 2.0 supports non-nanosecond datetime64r   r]  )r\  )r   r.   rI  r   rJ  rE   rb   r  rc   r  rI   rR   rd   r  )r   rh   rU   re   s       r7   &test_timestamp_to_pandas_coerces_to_nszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_coerces_to_ns)  s    2>>"gg&66KKJKhhy",,t"4599R^^IDABMMO
q(+u%MMO
q(+rj   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re   r]  r^  )Nr#  r   r  r   z'would result in out of bounds timestampr  Tr  F)r6  r  )
rE   rb   r   r  rY   r   r0  r1  rI   column)r   r\  r   rh   rY   msgs         r7   &test_timestamp_to_pandas_out_of_boundszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_out_of_bounds6  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   r^  rg  r%   r   )
rE   rY   r  r  rI   r.   r/   rc   rR   rS   )r   rY   rZ   rU   s       r7   &test_timestamp_to_pandas_empty_chunkedzCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_empty_chunkedQ  sf    #r//d9KLMN"<<bii:J&K LM
fh/rj   r   c                 P    t        j                  g dd      }t        ||       y )N)
2007-07-13Nz
2006-01-15z
2010-08-19r  r   rg  r  )r   r   datetime64_ds      r7   test_numpy_datetime64_day_unitz;TestConvertDateTimeLikeTypes.test_numpy_datetime64_day_unitX  s&    xx !
 "# 	+<eDrj   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  )	r0   rb   r.   rc   r   rE   r  rH   rJ   )r   mr   rZ   rU   s        r7   %test_array_from_pandas_date_with_maskzBTestConvertDateTimeLikeTypes.test_array_from_pandas_date_with_maskb  s    HH()yyq!q!q!
  %%d%399dDq!$4d;<xx##H-44V<<<rj   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.   r/   	Timestampr  r\   r   s     r7   test_fixed_offset_timezonez7TestConvertDateTimeLikeTypes.test_fixed_offset_timezoneo  s?    
 \\89
  	 6rj   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 )	NrF  r  timedelta64)r   l     qa    @B1timedelta64[rc  r   r  r   r.   rI  r/   r0   rb   rE   r   durationr:   r\   r   r\  rT   r   r:   s        r7   test_timedeltas_no_nullsz5TestConvertDateTimeLikeTypes.test_timedeltas_no_nulls  s    2>>"WW%55D\\288$E,8a*@B
  D(9:E7#"	
rj   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 )	NrF  r  r!  )r   Nr"  r#  rc  r   r  r$  r&  s        r7   test_timedeltas_nullsz2TestConvertDateTimeLikeTypes.test_timedeltas_nulls  s    2>>"WW%55D\\288$<,8a*@B
  D(9:E7#"	
rj   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  )rh  monthsmicrosecondsnanosecondsr  )pandas.tseries.offsetsr+  r.   r/   rE   r:   month_day_nano_intervalr\   )r   r+  rT   r:   s       r7   test_month_day_nano_intervalz9TestConvertDateTimeLikeTypes.test_month_day_nano_interval  sb    5\\D&DA3689
 
 ]B,F,F,HIJK"	$rj   )6r  r  r  r  rX  r[  r   r  r  rf  rm  rw  hgivenstnonepast	timezonessettingsr|  r  r  r  r  r  r  r  rE   r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  skipifr0   r   rI  r  r'  r)  r2  r  rj   r7   rP  rP  +  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%<=
 >

$rj   rP  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   rP     mañanastrings)r   NrP  r>  Nr*  )r0   rM   r.   r/   rE   r   r   r   large_stringr  r:   r\   )r   repeatsrs   rT   r   r:   r  rU   s           r7   test_pandas_unicodez.TestConvertStringLikeTypes.test_pandas_unicode  s    ui8\\9fw&678!,!>!>!@BOObiik
 E7#9	<<I,? @AXvNrj   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   barzr?  r   )   quxrE  NrF  rG  N)	bytearrayr0   rM   r.   r/   rE   rG   rH   r_   binaryr\   )r   rs   rT   rY   values2rU   s         r7   test_bytes_to_binaryz/TestConvertStringLikeTypes.test_bytes_to_binary  s    y'95"&&I\\9f-.$$R(Qx}}		+++?<<G 45H-rj   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r?     r6   r)   r   )	r.   r/   rE   rb   r   ChunkedArray
num_chunksrG   rH   )r   v1v2rT   rh   rY   s         r7   test_bytes_exceed_2gbz0TestConvertStringLikeTypes.test_bytes_exceed_2gb  s    II \\tbyB4'3%"*4
  hhr)}%#r///~~"""$$R(Qx""a'''rj   charr6   rM  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 )NrN  rO  r?  rP  rM  Tr  fullr)   r      r   )
r.   r/   rE   rb   validater   rQ  rR  r   r1  )r   rV  rS  rT  rT   rh   s         r7   +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%%%rj   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 )NrE     bar   heyr?  r   rh  r   )rH  r.   r/   rE   r:   r   rI  rG   rH   r_   ra   rI   rR   rS   )r   rs   rT   r:   rY   rZ   s         r7   test_fixed_size_bytesz0TestConvertStringLikeTypes.test_fixed_size_bytes  s    $	& 14vF\\9f-.BHHY		!=>?$$R$7||A##vay~~555||A##vay~~555"
fb)rj   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)rE  Ns   baNNr_  r?  r   rh  )r.   r/   rE   r:   r   rI  r   r0  ArrowInvalidrG   rH   )r   rs   rT   r:   s       r7   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   123rj   rA  Nrf   )r.   rc   ri   rE   rI  r   re   s     r7   test_variable_size_bytesz3TestConvertStringLikeTypes.test_variable_size_bytes  s!    II/05rj   c                     t        j                  t        d      t        d      t        d      d g      }t        |t	        j
                                t        |t	        j
                                y )Nrf  rj   rA  rg  rg   )r.   rc   rH  ri   rE   rI  rh  s     r7   test_binary_from_bytearrayz5TestConvertStringLikeTypes.test_binary_from_bytearray  sM    IIy()C.)D/  	 5BIIK@rj   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y Nre  rg  r   rh  )r.   rc   ri   rE   large_binaryr/   r\   r:   r   re   rT   s      r7   test_large_binaryz,TestConvertStringLikeTypes.test_large_binary	  sY    II/0):;\\3(#ryy3(9":!;<	>rj   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y N)123r*   r   Nrg  r   rh  )r.   rc   ri   rE   r@  r/   r\   r:   rp  s      r7   test_large_stringz,TestConvertStringLikeTypes.test_large_string  sY    II,-):;\\3(#ryy3(9":!;<	>rj   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y rn  )r.   rc   ri   rE   binary_viewr/   r\   r:   rp  s      r7   test_binary_viewz+TestConvertStringLikeTypes.test_binary_view  sY    II/0)9:\\3(#ryy3(8"9!:;	=rj   c                    t        j                  g d      }t        |t        j                                t        j
                  d|i      }t        |t        j                  dt        j                         fg             y rs  )r.   rc   ri   rE   string_viewr/   r\   r:   rp  s      r7   test_string_viewz+TestConvertStringLikeTypes.test_string_view  sY    II,-)9:\\3(#ryy3(8"9!:;	=rj   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*   r?  rh  Fstrings_to_categoricalTr{  )r.   r/   rE   r   r  r:   rG   rH   rI   rR   rS   Categorical)
r   rs   rT   r   r:   rY   result1	expected1r   	expected2s
             r7   test_table_empty_strz/TestConvertStringLikeTypes.test_table_empty_str%  s    %\\9f-.BIIK0E7#$$R$7///?LL)V!45	
gydC///>LL)R^^F-C!DE	
gydCrj   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}  r?  rh  
categoriesTr{  )r?  )r.   r/   rE   r   r  r:   rG   rH   r  rI   rR   rS   tuple)r   rs   rT   r   r:   rY   expected_strexpected_catr  r   result3result4s               r7   test_selective_categoricalsz6TestConvertStringLikeTypes.test_selective_categoricals4  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|Frj   c                     t        j                  g t        j                               }t         j                  j	                  |gdg      }|j                  dg       y )Nrg  r[   r  r   r  )rE   rb   r   rG   r   rI   )r   rb   rY   s      r7   &test_to_pandas_categorical_zero_lengthzATestConvertStringLikeTypes.test_to_pandas_categorical_zero_lengthF  sE    "((*-$$UGE7$CE7+rj   c                     t        j                  g d      j                         }t         j                  j	                  |gdg      }|j                  dg      }|j                         j                  |      sJ y )N)r   r   r   rP  r[   r  r  )rE   rb   dictionary_encoderG   r   rI   rJ   )r   rb   rY   rZ   s       r7   ,test_to_pandas_categories_already_dictionaryzGTestConvertStringLikeTypes.test_to_pandas_categories_already_dictionaryM  sd    56HHJ$$UGE7$CUG4 ''///rj   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   r?  rh  Tr~  r{  r  zero_copy_onlyr`   )r.   r/   rE   r   r:   rG   rH   rI   r  rR   rS   r   r0  rb  rc   rd   	r   r  rs   rT   r   r:   rY   rZ   rU   s	            r7   (test_table_str_to_categorical_without_nazCTestConvertStringLikeTypes.test_table_str_to_categorical_without_naT  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   r?  rh  Tr~  r{  r  r`   )r0   rM   r.   r/   rE   r   r:   rG   rH   rI   r  rR   rS   r   r0  rb  rc   rd   r  s	            r7   %test_table_str_to_categorical_with_naz@TestConvertStringLikeTypes.test_table_str_to_categorical_with_nao  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 )NrM  r   )rE   rb   r0   r?   r  r_   )r   	converteds     r7   test_array_of_bytes_to_stringsz9TestConvertStringLikeTypes.test_array_of_bytes_to_strings  s=    HHRXXtfF;RYY[I	~~,,,rj   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   r0  rE   librb  rb   r0   r?   r  r   s    r7   '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)rE  r^     bazz|S3r   r   rg  FTFr  )rE  Nr  z)Got bytestring of length 3 \(expected 4\)r  r   z*Got bytestring of length 12 \(expected 3\)z|U3)
r0   rb   rE   rI  r  rJ   r   r0  r  rb  )r   rh   r  rU   rl   s        r7   ,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  rB  rK  r   r  large_memoryrU  r  r\  r`  rc  ri  rl  rq  ru  rx  r{  r  r  r  r  rE   r  r@  rz  r  r  r  r  r  r  rj   r7   r<  r<    sG   O	. [[( (  [[[[Vc4[1& 2 &*46A>>==DG$,0 [[			_R__%68HI<<0 [[			_R__%68HI<<2-I-rj   r<  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.123731rp  z-314292388910493.12343437128)rs   r  r   r   r  )idr  r   r  rq  rr  r  c                 2   t        j                  d|i      }t        j                  j	                  |d      }t        j
                  d|      }t        j                  |g|j                  j                        }|j                  j                  |      sJ y )Nro  Fr   r  )	r.   r/   rE   rG   rH   r   r:   r  rJ   )r   rs   r  rU   rY   r   rV   s          r7   test_decimal_from_pandasz0TestConvertDecimalTypes.test_decimal_from_pandas  sv     <<V 45$$Xe$D]3 ))UGell6K6KL||""?333rj   rs   c                     t        j                  d|i      }t        j                  j	                  |      }|j                         }t        j                  ||       y )Nro  )r.   r/   rE   rG   rH   rI   rR   rS   )r   rs   rU   r  rT   s        r7   test_decimal_to_pandasz.TestConvertDecimalTypes.test_decimal_to_pandas  sI     <<V 45HH((2	  "
b(+rj   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)   rg  z1.2345r   )r   r   rE   r  r   r0  rb  rb   )r   data1type1data2type2s        r7   "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   rg  z0.01000z0.00100)	r   r   r.   rc   rE   rb   r  r_   r  )r   r   seriesrb   rU   s        r7   &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,,,rj   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 )Nry  r  r   rg  r)   r.   rc   r   r   ri   rE   r  r   r  s     r7   $test_decimal_with_None_explicit_typez<TestConvertDecimalTypes.test_decimal_with_None_explicit_type  s^    GOOF3T:;bmmB.BC D6A:&bmmB.BCrj   c                     t        j                  t        j                  d      d g      }t	        |t        j                  dd             y )Nry  r   r)   rk  r  r  s     r7   !test_decimal_with_None_infer_typez9TestConvertDecimalTypes.test_decimal_with_None_infer_type  s3    GOOF3T:;q!9LMrj   c                     ddidt        j                  d      id}t        j                  j	                  |      }t        |       y )Nr   r   z0.0r+  )r   r   r.   r/   	from_dictr\   )r   tmpdirr   rT   s       r7   test_strided_objectsz,TestConvertDecimalTypes.test_strided_objects  sA     SW__U+,
 \\##D)#rj   rw  c                     t        j                  d      d g}t        j                  | |dd            }|j	                         }t        j                  |      }t        j                  ||       y )Nry  r   r)   rg  )	r   r   rE   rb   rI   r.   rc   rR   rd   )r   rw  r   rh   rZ   rU   s         r7   test_decimal_array_to_pandasz4TestConvertDecimalTypes.test_decimal_array_to_pandas
  sU     '.hht#a),99T?
vx0rj   N)r  r  r  r  r   r   r  r  r  r   r  r  paramrE   r  r  r  r  r  r  r  r  r  r  rj   r7   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1rj   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:   rV   Fr0  rg  )r   r\   rE   rG   rH   with_metadatar:   r  rJ   rK   r   ru   r_   r   rT   r:   rY   rV   r  r   s          r7   test_column_of_arraysz*TestConvertListTypes.test_column_of_arrays  s    *,
F66J$$Ru$M !..u||/D/DE||""?333jj 	@FLL(E"2f:EJJ?	@rj   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   rg  r   r)   r   )
r0   rb   r1   r?   rE   ri  r   r  r  r4   )r   r   rh   rf   r  s        r7   test_column_of_arrays_to_pyz0TestConvertListTypes.test_column_of_arrays_to_py*  s    hhIIb&IIau%IIau%	

  #xx%(Aw}}$uRy/111Aw}}$uQx.000Aw}}&&&Aw}}1#%%%rj   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 )NTFrg  r  r   r   rm   )rE   rb   ri  r  rG   r   rI   r.   r/   rR   rS   rd   rc   )r   rb   rY   rT   rl  re   s         r7   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Krj   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   rB  z3.3r)   r   rg  r  r   )rE   rb   r   r   ri  r  rG   r   rI   r.   r/   rR   rS   )r   rb   rY   rT   rl  s        r7   test_column_of_decimal_listz0TestConvertListTypes.test_column_of_decimal_listG  s    7??3/1EF"??5124 hhr}}Q':;= $$eWVH$=__llws+W__S-ABu-.0 12 	b+.rj   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   rg  )r.   rc   r0   rb   rM   r?   rE   ri  r   
large_liststructr   rJ   r   r0  	TypeErrorrs   )r   re   r3  rZ   rU   s        r7   +test_nested_types_from_ndarray_null_entriesz@TestConvertListTypes.test_nested_types_from_ndarray_null_entriesS  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\   rE   rG   rH   r  r:   r  rJ   rK   r   ru   r_   r  s          r7   test_column_of_listsz)TestConvertListTypes.test_column_of_listsa  s    )+
F66J$$Ru$M !..u||/D/DE||""?333jj 	@FLL(E"2f:EJJ?	@rj   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 )Nrf  )r   r   r   r   r)   r   )	r.   rc   r0   rb   rA  rE   rI   rR   rd   )r   	num_listsre   r  rh   rZ   s         r7    test_column_of_lists_first_emptyz5TestConvertListTypes.test_column_of_lists_first_emptyn  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   rh  )r.   r/   r0   rb   r?   rE   r:   r   ri  r   rG   rH   concat_tablesrI   rR   rS   )r   rT   r:   r  r  rY   rZ   s          r7   test_column_of_lists_chunkedz1TestConvertListTypes.test_column_of_lists_chunkedv  s    \\RXXAAAAA 	
 	 HHWbhhrxxz23
  XX!!"Ra&!8XX!!"QR&!8  "b*"
fb)rj   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   rh  )r.   r/   r0   rb   r?   rE   r:   r   ri  r   rG   rH   rI   rR   rS   )r   rT   r:   rY   rZ   s        r7   "test_empty_column_of_lists_chunkedz7TestConvertListTypes.test_empty_column_of_lists_chunked  s    \\RXXb/
  HHWbhhrxxz23
  $$R$7"
fb)rj   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  rr  r                 r   r        r   r   )
rE   rb   rG   r   r  rI   r.   r/   rR   rS   )
r   r  r  r  r<  r  r  concatenatedrZ   rU   s
             r7   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/rj   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.   concatrs   stridesru   )r   rT   r:   rh   s       r7   test_column_of_lists_stridedz1TestConvertListTypes.test_column_of_lists_strided  sZ    )+
FYYtaxd3k  1%{{1~"""s#rj   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   )	r0   rb   r?   rE   r  rJ   r_   ri  r  )r   r   rh   rU   r  s        r7   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(###rj   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.   rc   rE   rb   r  rJ   r_   ri  r  r   r   rh   rU   s       r7   test_nested_lists_all_emptyz0TestConvertListTypes.test_nested_lists_all_empty  sh    yy"b"&hhtn88DJ'zz(###xx288BGGI....rj   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.   rc   rE   rb   r  rJ   r_   ri  r  r  s       r7   test_nested_list_first_emptyz1TestConvertListTypes.test_nested_list_first_empty  sh    yy"se%hhtn88DJ'zz(###xx288BIIK0000rj   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   rg  r  )
r.   rc   r0   rb   rE   rs   ri  r   rJ   r   )r   r   rZ   r   rU   data3r  	expected3s           r7   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(((rj   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   r6  r   strsr   r   dnested_strsr  )r   r0   rM   r.   r/   rE   r:   r   ri  r   r  r\   r   r   rT   rV   s       r7   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Drj   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  rr  rg  )rE   ri  r   rb   rI   r  rx   ry   )
r   fixed_tyvariable_tyr   	fixed_arrvariable_arrrZ   rU   leftrights
             r7   test_fixed_size_listz)TestConvertListTypes.test_fixed_size_list  s    88BHHJ!4hhrxxz*dL.AHHT1	xx;7$$&))+vx0 	0KD%|}$}""4/	0rj   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 )Nr6  r   r   r   r)   r   r  )r   r0   rb   r   r.   r/   rE   r:   r   ri  r\   r  s       r7   test_infer_numpy_arrayz+TestConvertListTypes.test_infer_numpy_array		  s    !Qrxx0!Qrxx0 
  \\$))HHVRXXbhhj12%
  	 ODrj   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   r@   rA   )rE   rb   r   ri  r  StructArrayr   	ListArrayr.   rc   rI   rN   rO   rP   rQ   rR   rd   )r   r6  r?  structsr   rU   r  s          r7   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.dev0rF  $Regression in pandas with numpy 1.25r   r   r   rP  r   r  r_  rD  Nquuxr  quzr  gr@   rA   )r   r0   rI  r.   r   rJ  rE   rb   ri  map_utf8rI   rc   rN   rO   rP   rQ   rR   rd   )r   r   rh   r  rU   s        r7   test_to_list_of_maps_pandasz0TestConvertListTypes.test_to_list_of_maps_pandas-	  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
        r  rF  r  )r@   r   rP  r_  rD  r  r@   r   r   r@   r   r   r   r  Nr  r)   r   r)   r   r   r   rP  r_  r  rA   )r   r0   rI  r.   r   rJ  rE   rb   sliceri  r  MapArrayr   r  rI   rc   rN   rO   rP   rQ   rR   rd   )	r   r  itemsmaprh   r  rU   series_slicedexpected_sliceds	            r7   "test_to_list_of_maps_pandas_slicedz7TestConvertListTypes.test_to_list_of_maps_pandas_slicedB	  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  rg  )	r0   rb   r.   rc   rE   r  rH   ri  rJ   )r   r  r   rU   r  re   rZ   s          r7   ,test_array_from_pandas_typed_array_with_maskzATestConvertListTypes.test_array_from_pandas_typed_array_with_maski	  s    $ HH()IIdO%%aabhhqsm%Dxx##H)+!# $ 88>vG 	G Grj   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   rB  3r+  )r0   emptyr?   fillr.   r/   rb   rE   rG   rH   rI   rR   rS   )r   empty_list_arrayrT   r  rZ   s        r7   test_empty_list_roundtripz.TestConvertListTypes.test_empty_list_roundtrip	  sq    88D7b!\\ 9 02 3hh""2&
fb)rj   c                 8   t               \  }}|D ]  }||j                     j                  }t        j                  t        |      |j                        }t        j                  |      }|j                  |j                  k(  sJ |j                  |      rJ  y )Nrg  )r   ra   rs   rE   rb   r  r_   rJ   )r   rT   r:   r   rh   rU   rZ   s          r7   test_array_from_nested_arraysz2TestConvertListTypes.test_array_from_nested_arrays	  s}    *,
F 	+EUZZ.''CxxS	

;HXXc]F;;%**,,,==***	+rj   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   rg  r@   z&Creating an ndarray from ragged nestedrA   r   Frm   )rE   rb   r  r   rI   rN   rO   rP   _np_VisibleDeprecationWarningrQ   rR   rd   r.   rc   r?   rh  s     r7   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 )
Nr/  r.  ccrg  s   aas   bbs   ccFrm   )rE   ri  r  rb   ro  rI   rR   rd   r.   rc   r@  )r   list_type_factoryre   s      r7   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&"=>!#	#rj   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   rP  Nr   )r   r   r   r   r   )r   r   Nr   r)   )rE   rb   r  r  r   r.   rc   r  rR   rd   rI   take)r   childrh   rU   s       r7   test_list_of_dictionaryz,TestConvertListTypes.test_list_of_dictionary	  s    45GGIll&&> 99S]]_-
s}}9 hh'
s}}9rj   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   r+  TrX  r   r)   i r   )r.   r/   r  r  r0   zerosr4   rE   rG   rH   r[  rR  r   r1  )r   nrT   rY   column_as        r7   #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>>!$%***rj   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rA  r      br)      cr      dr      er   )   fr      gr   r)  rh  )r.   r/   rE   r:   r!  rI  r   r\   )r   r   rT   r:   s       r7   test_map_array_roundtripz-TestConvertListTypes.test_map_array_roundtrip	  si    I&1
 \\5$-(UBGGBIIK$DEFG62rj   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 )
NrJ  rK  rM  rO  rU  r)   rg  Frm   )rE   rb   r!  rI  r   r  r.   rc   rI   rR   rd   )r   r  rowkr  r  arr1r  rh   rU   actuals              r7   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 )NrJ  rK  )rP  rR  )rT  NrU  rg  Frm   )rA  r.   rc   rE   rb   r!  rI  r   rI   rR   rd   )r   r   rY  rZ  r  rU   rh   r\  s           r7   test_map_array_with_nullsz.TestConvertListTypes.test_map_array_with_nulls	  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  Frm   )rE   rb   r  r  r4   r   r'  r   r.   rc   rI   rR   rd   )r   offsetsr(  r  rh   rU   r\  s          r7   !test_map_array_dictionary_encodedz6TestConvertListTypes.test_map_array_dictionary_encoded	  s    ((9%23EEGxxU3u:./0kk%%gtU; 99+h-ABD 
vxUCrj   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   )rE   rb   r  r&  to_numpyr0   rM   r  rx   ry   base)	r   rh   chunked_arrr  rU   r  r  expected_basenp_arr_sliceds	            r7   test_list_no_duplicate_basez0TestConvertListTypes.test_list_no_duplicate_base	
  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Drj   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   rm  r   Nr  )rb  rs   rl   Fr  r   r   r   r?   r   )
rE   r  r   rb   re  r0   rM   r  rx   ry   )r   rh   r  rU   r  r  s         r7   test_list_values_behind_nullz1TestConvertListTypes.test_list_values_behind_null'
  s    ll&&HH\*8834./ ' 

 U388b"Xtb"&&\:(Kvx0 	4KD%}u}$}&&tU3		4rj   rX   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   rb  sizesrs   r   r)   r   r   r   r   r   rE   rb   rI   r.   rc   rR   rd   r   rX   rh   r\  rU   s        r7   .test_list_view_to_pandas_with_in_order_offsetszCTestConvertListTypes.test_list_view_to_pandas_with_in_order_offsets6
  z    HHY'((9%88./   
 99q!fq!fq!f56
vx0rj   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   rq  rr  rs  r   r   r   r   r   r)   ru  rv  s        r7   2test_list_view_to_pandas_with_out_of_order_offsetszGTestConvertListTypes.test_list_view_to_pandas_with_out_of_order_offsetsC
  rx  rj   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   rr  rs  r   )r)   r   r   r   )r   r   r   r   ru  rv  s        r7   1test_list_view_to_pandas_with_overlapping_offsetszFTestConvertListTypes.test_list_view_to_pandas_with_overlapping_offsetsP
  sn    HHY'((9%88./   
 99lL,GH
vx0rj   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  rb  rt  rs   rl   )
r   rE   rb   rI   r.   rc   r0   rM   rR   rd   rv  s        r7   )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0rj   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   rq  r   rs  )r   r   r   )r   r   r   )r   r   r   Nr  r~  r   r   r)   r   )r   r   r   r   r   )gccollectrE   total_allocated_bytesr   rb   r  rI   r.   rc   r0   rM   rR   rd   )	r   rX   bytes_startr[  r  rh   r\  rU   	bytes_ends	            r7   (test_list_view_to_pandas_multiple_chunksz=TestConvertListTypes.test_list_view_to_pandas_multiple_chunksk
  s%   


..0  HHY'((9%88L) ! 

   HHY'((9%88O,./	 ! 
 d|,99q!fq!fq!fi!QQUVW
vx0,,.	K'''rj   )5r  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  rE   r   r  r  r0  r6  r8  r;  r?  rC  r  rH  rW  r]  r_  rc  rj  ro  ListViewArrayLargeListViewArrayrw  rz  r|  r  r  r  rj   r7   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(rj   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 )Nrl  r   r)   r+  r   r   r   r   r  r  )r.   r/   rE   r:   r  r   r\   )r   rT   rV   s      r7   test_pandas_roundtripz,TestConvertStructTypes.test_pandas_roundtrip
  s    \\711%5QQ7G$HIJ))bii#rxxz!2S"((*4E FGH%
  	 OD 	 	Irj   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   rg  )r   Nr   )TFN)r6  r  r  r   Tr)   Fr   r   )rE   rb   r   r  r  r  r   r.   rc   rI   rR   rd   )r   r6  r  r  rh   rU   r  s          r7   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0rj   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   rg  r)   r6  )r  r  rE   r  rb   r   r  r   r  r.   rc   rI   rR   rd   )
r   r  ints1ints2r[  r  rh   rU   r  r  s
             r7   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'''rj   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 )Nr6   )y_titlerB  rB  r   rg  )r  T)+   Fr  T)r6   rB  r  Fr  r  )	r0   r   r   r  rE   r  r   rb   r  r   r  r3  r   rh   s        r7   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(***rj   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 )Nr6   xxyyrB  zl        r  r   r   rg  ))r   Tr)   r   ))r   Fr   rP  r   T)r  r  r)   r   )r6   rB  r  r   Fr   rP  )r0   r   r   r  r   object_itemsizesysmaxsizerE   r  r   r  rb   r  r  s        r7   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=#? ? 	? ?rj   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        r6   )rB  r?   i      .r   rB  r  Tr@  rX  r)   c              3   N   K   | j                         D ]  }|E d {     y 7 wr  )
iterchunks)rh   r1  s     r7   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)Nr6   rB  zFailed at index)r   	enumerater  r0   r  	Exceptionprint)
rh   r   rl   xsysir  r  r6   r  s
            r7   checkz;TestConvertStructTypes.test_from_numpy_large.<locals>.check  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_   rl   rH   r  )r0   r   r    r  rE  r2   random_samplerM   rE   r  r   rI  rb   r[  rR  )r   target_sizer  bsblockrF  r   r3  rh   r  rl   r  s              @r7   test_from_numpy_largez,TestConvertStructTypes.test_from_numpy_large   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rj   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)	Nr6   rB  r  r   zMissing field 'y'r  rg  zExpected struct array)rE   r  r   r   r  r0   r   rb   r   r0  r1  r  )r   r3  r  r   s       r7   test_from_numpy_bad_inputz0TestConvertStructTypes.test_from_numpy_bad_input9  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)   r+  r   r   r   r   r  )rU   r:   rV   )
r.   r/   rE   r  r   r0   asarrayru   r:   r\   )r   rT   rl  struct_typerh   rV   s         r7   test_from_tuplesz'TestConvertStructTypes.test_from_tuplesH  s    \\8ff%567llaa(*:;<> ii#rxxz!2S"((*4E FGjjH&+h/k	C ))h%<$=>_+	-rj   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 )	Nr6  r  )  i  r  )r   r   Nr   c              3   <   K   | ]  }|j                           y wr  )r  ).0rB  s     r7   	<genexpr>zCTestConvertStructTypes.test_struct_of_dictionary.<locals>.<genexpr>`  s     GUu0Gs   )r   Nr)   r   )rE   rb   r  r  r   r  r  r.   rc   rR   rd   rI   rA  )r   r   childrenrh   rows_as_tuplesrY  rows_as_dictsrU   s           r7   test_struct_of_dictionaryz0TestConvertStructTypes.test_struct_of_dictionaryY  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  rj   r7   r  r  
  sa    I1"(6+>?4 [[[[5  5n$-":rj   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   Trn  rw   )r   rZ   s     r7   test_zero_copy_successz-TestZeroCopyConversion.test_zero_copy_successq  s.    )$..d.Cvy1rj   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   Trn  Frm   )rE   r7  r   r0   rb   rI   r.   r  rR   rd   rc   )r   rh   rZ   rs   s       r7   test_zero_copy_dictionariesz2TestZeroCopyConversion.test_zero_copy_dictionariesu  s      ,,HHaVHHaS(

 d3A'
ryy0"))F2C+0	2rj   c                     t        j                  dgd      }t        j                  |      j                  d      }t	        j
                  ||       y )Nr  r&   r   Trn  r0   rb   rE   rI   rx   ry   r   rh   rZ   s      r7   test_zero_copy_timestampz/TestZeroCopyConversion.test_zero_copy_timestamp  s@    hh~-=>#(((=vs+rj   c                     t        j                  dgd      }t        j                  |      j                  d      }t	        j
                  ||       y )Nr   r(   r   Trn  r  r  s      r7   test_zero_copy_durationz.TestZeroCopyConversion.test_zero_copy_duration  s@    hhs"34#(((=vs+rj   c                     t        j                  t        j                        5  |j	                  d       d d d        y # 1 sw Y   y xY w)NTrn  )r   r0  rE   rb  rI   r   rh   s     r7   check_zero_copy_failurez.TestZeroCopyConversion.check_zero_copy_failure  s5    ]]2??+ 	/MMM.	/ 	/ 	/s   A  A	c                 P    | j                  t        j                  g d             y )N)r   BCr  rE   rb   r  s    r7   &test_zero_copy_failure_on_object_typesz=TestZeroCopyConversion.test_zero_copy_failure_on_object_types  s    $$RXXo%>?rj   c                 P    | j                  t        j                  g d             y )N)r   r   Nr  r  s    r7   *test_zero_copy_failure_with_int_when_nullszATestZeroCopyConversion.test_zero_copy_failure_with_int_when_nulls  s    $$RXXl%;<rj   c                 P    | j                  t        j                  g d             y )N)r  r   Nr  r  s    r7   ,test_zero_copy_failure_with_float_when_nullszCTestZeroCopyConversion.test_zero_copy_failure_with_float_when_nulls  s    $$RXX.>%?@rj   c                 P    | j                  t        j                  ddg             y )NTFr  r  s    r7   $test_zero_copy_failure_on_bool_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_bool_types  s    $$RXXtUm%<=rj   c                     t        j                  ddgddggt        j                  t        j                                     }| j	                  |       y )Nr   r)   r   r  rg  )rE   rb   ri  r   r  r  s     r7   $test_zero_copy_failure_on_list_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_list_types  s<    hhAA'bhhrxxz.BC$$S)rj   c                 ~    t        j                  dd gd      }| j                  t        j                  |             y )Nr   r&   r   r0   rb   r  rE   r  s     r7   .test_zero_copy_failure_on_timestamp_with_nullszETestZeroCopyConversion.test_zero_copy_failure_on_timestamp_with_nulls  s-    hh4y(89$$RXXc]3rj   c                 ~    t        j                  dd gd      }| j                  t        j                  |             y )Nr   r(   r   r  r  s     r7   -test_zero_copy_failure_on_duration_with_nullszDTestZeroCopyConversion.test_zero_copy_failure_on_duration_with_nulls  s-    hh4y(9:$$RXXc]3rj   N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj   r7   r  r  l  sE    2
2,
,
/@=A>*44rj   r  c                  N    t               } t        | d       t        | dd       y )NFr=   Tr>   rW   r8   r\   rT   s    r7   _non_threaded_conversionr    s     		BBE2BEDArj   c                  N    t               } t        | d       t        | dd       y )NTr=   r  r  r  s    r7   _threaded_conversionr    s     		BBD1BD4@rj   c                   2   e Zd ZdZd ej
                         fd ej                         fd ej                         fd ej                         fd ej                         fd ej                         fd ej                         fd	 ej                         fd
 ej                         fd ej                         fd ej                         fd ej                          fd ej"                         fd ej"                  d      fd ej$                   ej                               fgZd Zd Zd Zd Zej2                  j4                  ej2                  j6                  d               Zd Zd Zd Zd Z ej2                  jC                  ddg diejD                  fdg diejD                  fdddgiejD                  fdddgiejF                  fdddgiejF                  fdddgiejF                  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     r7   test_all_none_objectsz%TestConvertMisc.test_all_none_objects  s    \\3 234#rj   c                 z    t        j                  dg di      }|d   j                  d      |d<   t        |       y )Nr   r  r  )r.   r/   r,  r\   r   s     r7   test_all_none_categoryz&TestConvertMisc.test_all_none_category  s4    \\3 234S'..,3#rj   c                     | j                   D ]<  \  }}t        j                  g t        j                  |            }t	        ||       > y )Nr   rg  )
type_pairsr0   rb   r   ru   )r   	dtype_strpa_typerh   s       r7   test_empty_arraysz!TestConvertMisc.test_empty_arrays  s=    "&// 	6Iw((2RXXi%89C"3W5	6rj   c                     t                y r  )r  r  s    r7   test_non_threaded_conversionz,TestConvertMisc.test_non_threaded_conversion  s     "rj   c                     t        j                  d      }	 |j                  t               |j	                          |j                          y # |j	                          |j                          w xY w)Nr)   )mpPoolapplyr  closejoin)r   pools     r7   %test_threaded_conversion_multiprocessz5TestConvertMisc.test_threaded_conversion_multiprocess  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   rP  rD  )r   r   r   r   r   rE  r^  rG  r  )rP  rD  r   Tr  r  )
cat_stringscat_strings_with_nacat_ints
cat_binarycat_strings_orderedr6  r  r?  strings2strings3)r0   rM   r.   r  r/   r\   ru   )r   rA  rS  rT  v3r  rT   rZ  s           r7   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-	.rj   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  )rE   rb   rI   rR   rd   r.   rc   )r  rh   rZ   s      r7   _checkzBTestConvertMisc.test_category_implicit_from_pandas.<locals>._check  s;    ((1+C]]_F""299V#4biilCrj   r}  r   r   r  Tr  )r.   r  )r   r  r  rh   s       r7   "test_category_implicit_from_pandasz2TestConvertMisc.test_category_implicit_from_pandas  sR    	D NN?SzBNN?Sz#')

  	C3K	rj   c                 n    t        j                  dt        j                  g       i      }t        |       y )Ncat)r.   r/   r  r\   r   s     r7   test_empty_categoryz#TestConvertMisc.test_empty_category  s&    \\5".."456#rj   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   )rE   r  r   r  
dictionaryr   rI   r.   r  r0   rb   rR   rd   rc   rY   r/   rS   )r   r  r   r   rZ   rU   rY   s          r7   test_category_zero_chunksz)TestConvertMisc.test_category_zero_chunks  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		4rj   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.   r/   r   r0  rE   rG   rH   )r   r   
error_typerT   r  s        r7   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  r@   r  r   r  r   r"   r$   r   r   r   r  )r0   r2   r3   rr   rN   rO   r   r  r,  rb   r4   r   r?   reshaper1   r!   r.   r/   r\   ru   )r   casesrK   NKrandom_numbersnumeric_dtypes	type_namer  boolean_objectsstrided_maskcaserT   r[   s                 r7   test_strided_data_importz(TestConvertMisc.test_strided_data_import5  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   )rE   rb   r   	NullArrayr   rp   r  )re   r  items      r7   _check_seriesz5TestConvertMisc.test_all_nones.<locals>._check_seriesa  sh    Ii666y>Q&&&''1,,,! %ruu}$}%rj   r   r   )r.   rc   r?   r0   rM   )r   r,  s     r7   test_all_noneszTestConvertMisc.test_all_nones`  s]    	% 	bii
&9:bii1F;<biirvvt 4FCDrj   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:   rU   rV   )r   r0   rb   r   r.   r/   rE   r:   r   r   r\   )r   r   rT   partial_schemas       r7   test_partial_schemaz#TestConvertMisc.test_partial_schemam  s    /""((.bhh?@%&
 
 \\$HHS"((*%HHS"((*%$
 
 	 >)+S#J0>	@rj   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;   rW   r   Fr   r   )rW   r;   )r.   r/   r\   r   )r   rT   rU   r   s       r7    test_table_batch_empty_dataframez0TestConvertMisc.test_table_batch_empty_dataframe~  s|    \\"484$G<<5HUCHUTRll2Y/D9d4Hrj   c           
         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                  |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                         |       y )Nrg  r   r   )rE   rb   r   r.   rc   r0   r?   rR   rd   rI   r  ri  r  r   )r   rh   empty_objectss      r7   test_convert_empty_tablez(TestConvertMisc.test_convert_empty_table  s   hhr
+		"((2V"<=
s}}!yy"BHH)EF	Hhhr		,
s}}>hhr 45
s}}>hhr		288C+D*E FG
s}}>rj   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.
        r6   rB  )r  r4  )r)   r   )r   rg  r  r8  r4  r)   N)r0   r   r   r   rb   r  rE   r  )r   r   r   rh   s       r7   test_non_natural_stridez'TestConvertMisc.test_non_natural_stride  s    
 3/C?;<xx8,E:||t###hhtCyrxxz2}}2s)+++hhtCyrxxz2}}2q')))rj   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   r4  r)   rg  )r   r   r   g      @)r0   r1   r   rE   rb   r    rJ   )r   r  pa_arrrU   s       r7   #test_array_from_strided_numpy_arrayz3TestConvertMisc.test_array_from_strided_numpy_array  s\    1b

3AbF;&rzz|4880rzz|Dhrj   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  rh  Fr  )r.   r/   r  r0   linspacerE   r:   r   r  r   r   r0  r1  rG   rH   r  r_   r  s       r7   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.   r/   r  SparseArrayr0   rM   AttributeErrorr   r0  r  rE   rG   rH   r   s     r7   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  rE   r   r   r   r   r   r   r   r   r  r   r    r  rI  ri  r  r  r  r  r  r   r  	processes	threadingr  r  r  r  r  r  r   rb  r  r'  r-  r1  r3  r6  r9  r<  r@  rD  r  rj   r7   r  r    s>   
 
	("((*	("((*	("((*	("((*	9299;	9299;	9299;	JBJJL!	JBJJL!	JBJJL! 
9299;	9299;	9299R=!	8288HBHHJ'(#J($$
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
?* 4$%rj   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_   r6  rg  )r.   rc   rE   r  rH   r   rb   rJ   )rs   rh   rU   s      r7   *test_safe_cast_from_float_with_nans_to_intrI    s[     YY'F
((

vBHHJT

BCxxbhhj9H::hrj   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   rP  r   r  ru  rd  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   repeatr0   tilerb   r?   r  r,  rc   rs   r2   r3   r  period_rangeinterval_ranger/   )r   r  r   s      r7   _fully_loaded_dataframe_examplerR    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**rj   rK   rE  r   c                 2   t        d      t        t        j                        cxk  rt        d      k  rn nt        j                  d       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 )NrF  rG  rH  r   )r   r.   rI  r   rJ  r/   rE   rG   rH   rI   rJ   r:   r  )rK   rT   table1table2s       r7   !test_roundtrip_with_bytes_unicoderV    s    w72>>2EWW5EE 	01	g	&BXX!!"%FXX!!&"2"2"45F==   ==...==!!V]]%;%;;;;rj   c                 Z    | dz  }| dz  } | dz  }| dz  } | dz  }| dz  }t        ||||      S )Nr  r  )r   )valr.  secondsminutesr~  s        r7   _pytime_from_microsr[    sI    =LGOCBhGBJCBhG2IEw66rj   c                 z    | j                   dz  | j                  dz  z   | j                  dz  z   | j                  z   S )Nl    $'- i r  )hourminuter  r  )pytimes    r7   r  r    sE    KK*$MMH$%MMG#$   rj   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  rj   r7   r   rb    s    rj   r   r   r  r  )r.   r/   r   r0  r1  rE   rG   rH   )r   rT   r  s      r7   +test_convert_unsupported_type_error_messagerc  	  sc      
sQS!#J'	(B
;C	z	- !
R ! ! !s    A44A=c                     | j                         }t        j                  || j                  d      }|j	                  |       sJ y )NTr@  )rI   rE   rb   r_   rJ   )rh   re   r   s      r7   test_array_to_pandas_roundtripre    s5    Axxd;H??3rj   c                 X    t        |       D cg c]  }t        d       }}||z  S c c}w )Nr  )r4   r   )nuniquerA  r  unique_valuess       r7   _generate_dedup_exampleri  &  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  rU   r6   s      r7   _assert_nuniquerk  +  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  rg  Fdeduplicate_objects)r   r   r   rJ  ri  rE   rb   rI  r"  r  rk  rI   r   )rg  rA  rs   rh   s       r7   .test_to_pandas_deduplicate_strings_array_typesrp  /  s    $$&R	
 GG$Wg6Fbiik2bggi0  &&!124 L 	1%@#c(K	Lrj   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 )Nrm  r  r  r   Frn  )r   r   r   rJ  ri  rE   rb   rF   r   rG   r8  rk  rI   r   )rg  rA  rs   rh   r  r  r  s          r7   .test_to_pandas_deduplicate_strings_table_typesrr  ?  s    $$&R	
 GG$Wg6F
((6
C		#	#SEE7	3B
((


%CCy ".8%@GC	""rj   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)   TrG  F)rH  ro  r   )r  r0   r2   r  rE   rb   rk  rI   )rg  rA  rh  rh   s       r7   .test_to_pandas_deduplicate_integers_as_objectsrt  R  s    GG **8Zg*NOM"&M'Q,
((=7*
+CCMMtM<gFCMMt6; " = q[G+a/1rj   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  rg  ro  Fr  )r  r4   rE   rb   rb  rk  rI   r   )	rg  rA  rh  r  raw_type
array_typepandas_optionsraw_arr
casted_arrs	            r7   $test_to_pandas_deduplicate_date_timer{  c  s    GGw(M 
(-t45	(-t45	,#	,#E 16 ),*n((=72B\\*-
,
,,>~>	!,
,, ? ?/=?J	))rj   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   r+  r   Fr  r   rh  )r.   r/   r0   rM   rE   r:   r   r    r"  r   r0  r1  rG   rH   )rT   r:   s     r7   /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   r)  NNr   gffffff
@r)  r  r  Fr   )r.   r/   r   rE   r:   r   ri  r    rG   rH   rJ   )df1r   schema1schema2rT  rU  s         r7   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==(((==(((rj   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   r)  r  r   r   r  Fr0  )r.   r/   r   rE   r:   r    ri  r   r  rG   rH   rJ   )rT   r:   r  r   rT  rU  s         r7   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=='''==...rj   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   r)  r  )r  r)  r  F)rK   r;   )r.   r/   r   rE   r:   ri  r   r    rG   rH   rJ   )rT   columns1r  columns2r  rT  rU  s          r7   ;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==(((==(((rj   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   r)  r  )r:   rK   )r.   r/   r   rE   r:   r   ri  r    r   r0  r1  rG   rH   )rT   r:   rK   s      r7   @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  Trh  )	r.   r/   rE   r:   r   r   rG   rH   r  rT   r:   rY   s      r7   /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4rj   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  r+  r   r   r   zname 'index' present in ther  rh  T)r:   r;   rV   z'preserve_index=False' wasFr0  z=name 'index' is present in the schema, but it is a RangeIndexr   r`   r  )r:   r;   rV   rU   ))r   r   )r   r)   )r   r   level1level2r   )r.   r/   rE   r:   r   r    r   r0  KeyErrorrG   rH   r   ra   r\   r1  r   rr   r  r   from_tuplesr  )rT   r:   rU   s      r7   +test_table_from_pandas_schema_index_columnsr    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  r+  r   r   r   Tr   )r;   r:   r   r   rh  )r.   r/   rE   r:   r   r    SchemarH   rG   rc  rJ   )rT   rV   r:   rY   s       r7   :test_table_from_pandas_schema_index_columns__unnamed_indexr  O  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Arj   c                  "   t        j                         } t        j                  j	                  |       j                  ddi      }t        j                  j	                  | |      }|j                  j                  j                  d      dk(  sJ y )NmetaTruerh  s   metas   True)
r.   r/   rE   r  rH   r  rG   r:   r  getr  s      r7   2test_table_from_pandas_schema_with_custom_metadatar  d  sm    	BYY""2&44ff5EFFHH  F 3E<<  $$W-888rj   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:00Zr3  r)   )r   r   )r   rA  rA  Tr  r   re   r  r  Frh  rK   r   ra   r  r   r   r   rF  zdatetime64[s, UTC])r.   r/   r   r0   r2   r3   rE   r:   r   r   r  rG   rH   rJ   r  rI   r   rI  r,  rR   rS   )rT   r:   rY   metadata_floatmetadata_datetimerZ   coerce_cols_to_typesrU   s           r7   2test_table_from_pandas_schema_field_order_metadatar  l  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&(+rj   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   rP  Nr_  rD  )FTFTF)r  r  c3c4c5)r.   r/   r0   rb   r2   r3   rE   rF   rH   rI   rR   rS   )r   r<  rZ   s      r7   test_recordbatch_from_to_pandasr    sy    <<hhg6hhh7iiooa 0/ D NN&&t,E__F$'rj   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   rP  N)r  r  r  r  r   r   r   r   Tr_  rD  r  )r.   r/   r0   rb   rE   rF   rH   rG   r8  rI   r  r  rR   rS   )r  r  batch1batch2rY   rZ   r   s          r7   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$'rj   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   )rE   record_batchrb   rY   rI   ra   )r  r  s     r7   *test_recordbatch_table_pass_name_to_pandasr    s|    	"((<01$	@B
"((<()$8Aa5??!!T)))Q4>>  D(((rj   r_   rU   r3  r!   r   r   r   r   r   r   r   r   r  r   r    r   rY  r   )lengthr  zlist[list[int16]]r  r   r   r]  r   r^  r  r&  re   r   c                 $    t        |       |k(  sJ y r  )r
   r  s     r7   test_logical_typer    s    < D!X---rj   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   )rE   rb   r0   r1   r   r2   r  r,  r  r  r  r  rI   )r  rh   prior_allocationr6   s       r7   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9rj   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)rE   rY   rb   r0   r1   r   !_check_to_pandas_memory_unchangedr  rI   _valuesflags	writeable)r  r  rZ   s      r7   test_singleton_blocks_zero_copyr     s    
"((299T:;<tfEA &ad;//1[[]F$<%%////##%(8888rj   c                 *   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  )rE   r  rI   r   r   r  rK   nbytes)r  kwargsr  r6   max_index_allocations        r7   r  r    s    //1A $$&  #3		(8(81(<='').>AU.UVVV'')-====rj   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  rg  r  r  r  r  r   r  Tr  )rE   rY   rb   r4   _check_blocks_createdr  )r  r  s     r7   test_to_pandas_split_blocksr    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.   rI  _data_mgrr  s    r7   _get_mgrr  -  s*    r~~!11xxwwrj   c                 n    | j                  d      }t        t        |      j                        |k(  sJ y )NTr  )rI   r   r  blocks)r  numberr6   s      r7   r  r  4  s/    	&Ax{!!"f,,,rj   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  )rE   rY   r4   rb   r0   r2   r3   )r  r   s    r7   _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  r   s     @r7   test_to_pandas_self_destructr  9  s5    
A( 	A%ad$O 	A%at<rj   c                     d} t        j                  t        j                  | t        j                              }t        j
                  |||gg d      }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      )rE   rb   r0   r1   r   rY   r  rI   r   r   r  r  )r  rh   r  r  r6   new_allocations         r7   test_table_uses_memory_poolr  K  s    A
((299Qbhh/
0C
#sC"45A//1	AUQYN$$&###%*:^*KLLL 	AJJL##%)9999rj   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   )rE   rb   rI   r   r0   r  getrefcount)rh   r  r  refcounts       r7   test_object_leak_in_numpy_arrayr  `  s    
((S!H:
C]]_F<<288H----
)Cs#H??38+++??38a<///rj   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   )rE   rb   rY   rI   r   r0   r  r  )rh   rY   r[   r  r  s        r7   test_object_leak_in_dataframer  l  s    
((S!H:
CHHcUTF#E
//
D
!C99****
a&Cs#H??38+++??38a<///rj   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   rg  r   r   )	rE   r   rb   ri  r0   r.   rc   r_   rJ   )r   r  r[  r  r  r  s         r7   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	*+++rj   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()r#  r^  r  rg  r   i r   r]  {   re   Fr5  r   r  r  )r   r   r   rH  )r   nowr.   rc   r  r  
tz_convertrE   r  r  rH   r_   r  to_pydatetimerb   rb  r   r0  r1  rJ   r  )
rX  re   s_nyc
us_with_tzrh   r  rU   targetrZ   r  s
             r7   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 )Nr^  r#  r  rg  r%  stop)r.   r  r  r  rE   rb   r  r  r   rI   rJ   )tsts_dtrh   r  rZ   r   s         r7   (test_nested_with_timestamp_tz_round_tripr    s    				BE
((E7d7I!J
KC^^''c
Wf4EFFFxxH??6"""rj   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  )re   r]  c                 &    | j                  d      S )Nr   r  )rL   r6   s    r7   truncatez/test_nested_with_timestamp_tz.<locals>.truncate  s    AII!I$<<rj   c                     | S r  r  r  s    r7   r  z/test_nested_with_timestamp_tz.<locals>.truncate  s    AXrj   rg  r#  r  r%  r  r   rr  r   )r.   r  r  r  rE   rb   r  r  r   rI   r   r   rs  
astimezoner   ru  rL   rY   )
r  r  r\  r  rh   r  arr3arr4rZ   utc_dts
             r7   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&9rj   c                  D   t        j                  g dd      } t        j                  g dt              }t        j                  g d      }dD ]  }| j	                  |      }t
        j                  j                  ||      }t
        j                  j                  |||      }|d   d	k(  r3t        j                  t              5  |j                          d d d        |j                         }t        j                  j                  ||
      }t        j                   t        j"                  |      t        j"                  |             |j                         }	|	j%                         j'                         dk(  sJ |}
|d   d	k(  r|j	                  |dd        }
t        j                  j                  t        j(                  |d|
      |
      }t        j                   t        j"                  |	      t        j"                  |              y # 1 sw Y   ?xY w)Nr   r)   r^  r   )FFTFFF)r   r   r   r   r   r   r   r   r  r   ur  r   r4  )r0   rN  rb   r?   r,  rE   r7  r   r   r0  r  rI   r.   r  
from_codesrR   rd   rc   ro   rq   where)src_indicesr  rl   
index_typer:  d1d2pandas1
ex_pandas1pandas2signed_indices
ex_pandas2s               r7   test_dictionary_with_pandasr
    s   ))Iq)K/v>J88=>D* J
$$Z0++GZ@++GZd+Ka=Cy) ,,.^^..w:.N

ryy1299Z3HI,,.~~##%*** !a=C$^^JqrN;N^^..rxxb8F0H:D / F
 	ryy1299Z3HI9J s   HH	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   )	r0   r2   r  r   rb   r4   r   r?   rand)rF  	item_sizepct_nullr  rZ   r  s         r7   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  rg  r  r  r  r   r  r  r  r  r  r+   )r0   r2   r  rE   rb   r  r7  r   r  r   r  concat_arraysr  rb  rI   r  r  r  r,  ro   rR   rd   )r  r  d3r  r<  r  r  r  expected_dictr   a_denserZ   result_denseexpected_denses                 r7   "test_variable_dictionary_to_pandasr  3  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<&&()<8rj   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   ra  )r   r   r   r   r   )rE   rb   r  r  r   rI   r.   rc   r0   r?   rR   rd   )rB  rh   rZ   rU   s       r7   (test_dictionary_encoded_nested_to_pandasr  _  s    HH./AACE
,,
"
"9e
4C]]_Fyy"((?&A((C:V<> ?H 68,rj   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  rE   r  r   r   r   r@  r  rb   r  r_   rJ   r0   )r  r  rZ   s      r7   test_dictionary_from_pandasr  l  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,,,rj   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  
value_typerg  T)r  r  r  z4The 'ordered' flag of the passed categorical values r  Fr  )r.   r  r  r0   rb   r?   rE   r  r   r  r_   rJ   r  r   r   r   r0  rb  r1  )r  rw  rZ   r  rU   s        r7   *test_dictionary_from_pandas_specified_typer    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.0r6   r   rP  r   zstring[pyarrow]r   r  )r   r.   rI  r   rJ  r/   r,  rE   rb   r  codesr  rs   r   r  rH   r7  r   )rT   r:  r  rU   rZ   s        r7   :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rj   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   rh  rg  )r.   r/   rc   rE   rY   rb   r   r1  rJ   r:   r    rs   )rT   rZ   rU   r:   r  s        r7   test_array_protocolr&    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==###rj   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__rE   r   r   	__class__s    r7   r,  zDummyExtensionType.__init__  s    G	Irj   c                      yNrj   r  r  s    r7   __arrow_ext_serialize__z*DummyExtensionType.__arrow_ext_serialize__      rj   c                 P    |dk(  sJ |t        j                         k(  sJ  |        S r0  )rE   r   )clsstorage_type
serializeds      r7   __arrow_ext_deserialize__z,DummyExtensionType.__arrow_ext_deserialize__  s+    S   rxxz)))urj   )r  r  r  r,  r1  classmethodr7  __classcell__r.  s   @r7   r(  r(    s"    I  rj   r(  c                     t        j                  g dt        j                               }t         j                  j	                  t               |      S )Nr   rg  )rE   rb   r   ExtensionArrayfrom_storager(  )r   r_   storages      r7   PandasArray__arrow_array__r?    s7     hhyrxxz2G))*<*>HHrj   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   rg  __arrow_array__F)raising
2012-01-01r   DrM  r   r   r   r   )rE   rb   r   r<  r=  r(  setattrr.   r  PeriodArrayr?  IntervalArrayrP  rQ  rJ   rc   r   rY   r/   r  r1  )monkeypatchr>  rU   rh   rZ   s        r7   *test_array_protocol_pandas_extension_typesrI    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&&&	'rj   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   r4  r   r   F)rr   )r   rE   r  r1  buffersr0   
frombufferoffsetr   BooleanArrayfrom_buffersr  r  r&  r!   r.   r  IntegerArrayrr   )r   rb   rh   buflistr   bitmaskrl   int_arrs           r7   _Int64Dtype__from_arrow__rT    s     %" kk!nkkmG==G4

3::C(*DajG++HHJC4/3zz$wws3xt,ii$$TYY[4%e$DGNrj   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   rf  r%  r   )r   r   r   r}  r   r   r   r   r  	1.3.0.dev__from_arrow__)r.   r/   rb   rE   rY   rI   r  r  rs   r   r0   
Int64DtyperR   rS   r   rI  delattrcorer  integer_IntegerDtypeNumericDtyper   )rH  rT   rY   rZ   r   rU  s         r7   test_convert_to_extension_arrayr^  1  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Grj   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.MyCustomIntegerTyper*  r-  s    r7   r,  zMyCustomIntegerType.__init__V  s    H	Jrj   c                      yr0  r  r  s    r7   r1  z+MyCustomIntegerType.__arrow_ext_serialize__Z  r2  rj   c                 *    t        j                         S r  )r.   rX  r  s    r7   r  z#MyCustomIntegerType.to_pandas_dtype]  s    }}rj   )r  r  r  r,  r1  r  r9  r:  s   @r7   r`  r`  T  s    Jrj   r`  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   rV  rW  r   )rE   rb   r   r<  r=  r`  rY   rI   r  r  rs   r   r.   rX  rc   rR   rd   r/   rS   r   rI  rY  rZ  r  r[  r\  r]  r0   r   r0  r1  )rH  r>  rh   rY   rZ   rU   s         r7   /test_conversion_extensiontype_to_extensionarrayre  a  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   rD  )rE   rY   rb   r   rI   r   r0   r.   rX  r  r   r   r/   PeriodDtype)rY   rZ   s     r7   'test_to_pandas_extension_dtypes_mappingrj    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8rj   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.ArrowDtyperP  Fr  r_  Tr   r   )rP  r_  rh  rg  )r   r.   rI  r   rJ  rE   r  r   r  r   
ArrowDtyper:   r/   r0   r,  rG   rH   rI   rJ  rS   )r  pd_typer:   df0rY   r  s         r7   4test_to_pandas_extension_dtypes_mapping_complex_typero    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+rj   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 missingrC  r   rD  rM  r   r   r[   r`   )r   r.   rI  r   rJ  rP  rb   rQ  rE   rI   rc   rR   rd   rY   )rh   rZ   rU   s      r7   test_array_to_pandasrq    s    r~~/=>acBHH!!!Q'--/ 1#((*99S>
vx05#,'.88:99Su-
vx01rj   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.   r/   rQ  rE   rY   r   rI  rR   assert_index_equalrI   r   r   rT   rY   s     r7   5test_roundtrip_empty_table_with_extension_dtype_indexrv    s    	B--A1=	>BHHRLEr~~/
eoo/55rxx@
eoo/55 hhQ(?12Q(?12Q(?(A .67	8rj   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   rg  )r   r.   rI  r   rJ  r/   rl  rE   r   r   rr   rY   rI   rR   rS   )r   rT   rU   rY   rZ   s        r7   !test_to_pandas_types_mapper_indexrx    s    r~~!11()	QQQ	

 mmBHHJ'
 i  wwyHHHRLE__"--_8F&(+rj   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   rg  r   )r   r.   rI  r   rJ  rE   rb   r   rX  r  rI   r   r0   r    Float64Dtyper   rh  rZ   s      r7   !test_array_to_pandas_types_mapperr}    s   r~~!11:;88Irxxz*D HHJ044L^^^6F<<2==?*** HHJ%))L^^^6F<<288G,,,, JJL"//"3488L^^^6F<<288G,,,,rj   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 rz  )r   r.   rI  r   rJ  rE   r  rb   r   r   rQ  rX  r  rI   r   r0   r    r{  r|  s      r7   )test_chunked_array_to_pandas_types_mapperr    s2    r~~!11:;RXXi<=>DdBOO,,, HHJ044L^^^6F<<2==?*** HHJ%))L^^^6F<<288G,,,, JJL"//"3488L^^^6F<<288G,,,,rj   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   rP  Nr_  )r   r   r   r   r"  rg  rl  r   r   __index_level_1__r   r   r   r)   rD  r   r   r      pandasr  r?   r  r  )ra   r   r  r  r  z0.23.4)r   r  rK   r  )rE   rb   r.   r/   r   rG   r   replace_schema_metadatajsondumpsrI   rR   rS   )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                         r7   )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!rj   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   rg  r"  r+  r   r   r)   rD  r   r   r  r?   zmixed-integer)r   r  ra   r  r  r   )r  ra   r  r  r   r  r4   )kindra   r%  r   r  z0.25.0)r  rK   r   r  )rE   rb   r.   r/   r   rY   r  r  r  rI   rR   rS   )r  r  r  r  rU   rY   rZ   s          r7   'test_metadata_compat_missing_field_namer    s    H#Hhhxg.Ghhxf-G|| ]]1aae46H HH712E ))4::#!' /	1 "& ') "' )+	 !	 '3( 
+ E: __F&(+rj   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   r`   r   r   ra   6)	r0   r   rE   rY   r.   r/   r   r:   r  ra   rY   r  s      r7   .test_metadata_index_name_not_json_serializabler    s_    88A;DHHR\\a(FGHE||++HO$Q'/3666rj   c            	          d} t        j                  t        j                  t        j                  dd|                   }|j
                  j                  }|d   d   d   dk(  sJ y )Nr   r   r   r`   r   r   ra   )rE   rY   r.   r/   r   r:   r  r  s      r7   -test_metadata_index_name_is_json_serializabler    sW    DHHR\\a(FGHE||++HO$Q'/1444rj   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:00r]  z2012-05-02 12:35z2012-05-03 15:42z3000-05-03 15:42z1991-01-01 00:00r  z2050-05-03 15:42)
dateTimeMs
dateTimeNsr  r?   rF  zM8[ns])r.   r/   r0   rR  r,  r  r   r  r  s    r7   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):    Irj   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  rE   rG   rH   pqwrite_table
read_tablerI   rR   rS   )tempdirrT   rY   filenamerZ   r   s         r7    test_timestamp_as_object_parquetr    sj     
!	"BHH  $E99HNN5(#]]8$F


t

4C"c"rj   c                      t               } t        j                  j                  |       }|j	                  d      }t        j                  | |       y )NTr  )r  rE   rG   rH   rI   rR   rS   )rT   rY   r   s      r7   %test_timestamp_as_object_out_of_ranger  +  s@     
!	"BHH  $E
//d/
3C"c"rj   
resolutionr  r   r#  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 |r0|d   j                  J |d   j                  j                  |      }n|d   j                  J |}|d   |k(  r{J  y )Nr  rg  r   Tr  r   )rE   rb   r  rY   rI   r   r?   r   r   rs  fromutc)r  r   r  rh   rY   rZ   rU   s          r7   'test_timestamp_as_object_non_nanosecondr  4  s     ((B4bll:"=
>CHHc3Z E 	$/D1#6 % ||v%%%&)X...!9##///ay''//3H!9##+++HayH$$$%rj   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 )Nro  r   x   i  r   r  r  9   timestamp_colTr  )	r   rt  r   rv  localizerE   rY   rb   rI   )ro  r   r   r  rY   rZ   s         r7   %test_timestamp_as_object_fixed_offsetr  M  s    v&D$H			,8,,T1b"bA	BBHHorxx~67E___6F88Fu$$$rj   c                      t        d       y )Nzpandas_threaded_import.py)r   r  rj   r7   test_threaded_pandas_importr  Y  s    -.rj   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   )	r0   r   r!  r.   r/   rE   rG   rH   rI   )rU   rT   r  s      r7   $test_does_not_mutate_timedelta_dtyper  ^  s    xx~H88BNN#x///	sR^^-./	0B
R AKKM88BNN#x///rj   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   )rY  r.  r   (   rp  )r~  rZ  rY  )r  timedelta_2r  )r   r   rE   rY   rI   to_pytimedelta)r   r  r  rY   rT   s        r7   %test_does_not_mutate_timedelta_nestedr  j  sp     #!9Ra#HIJK1b"=>KHH[MNE		BmQ..0KNBBBrj   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   defrh  r   r  strictmaps_as_pydicts)rE   r:   r   ri  r!  r   r  rI  rY   r.   r/   rI   rR   rS   rG   rH   rJ   )r:   rY   expected_default_dfexpected_as_pydicts_df
default_dfas_pydicts_dftable_default_roundtriptable_as_pydicts_roundtrips           r7   ,test_roundtrip_nested_map_table_with_pydictsr  w  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3rj   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   rP  )r_  rD  r  r  r   r   r   r  Nr  r  r   r   r)   )r   r   r   r   r  r  r  r   rP  r   r@   rA   r  returnc                     t        j                  t         j                  j                  |             }|j	                  d       |j                  |      sJ y )Nrg  TrX  )rE   r  r  rH   r[  rJ   )r  r   array_roundtripr3  s      r7   assert_roundtripzMtest_roundtrip_nested_map_array_with_pydicts_sliced.<locals>.assert_roundtrip  sJ    **288+?+?R+?+PQ  d +{{?+++rj   )rE   rb   r  ri  r'  r   r  r  r&  rI   r.   rc   rN   rO   rP   rQ   rR   rd   r!  )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  r3  s                       @r7   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)Nr!  r   r   r   r  r   rB  r   r   r  r  lossyr  rg  r   rP  r   )rE   rb   ri  r  r'  r   r!  r   r0  r  ArrowExceptionrI   r.   rc   rJ   r  rH   r   r  r(  r0   array_equal)r  r(  rb  mapsr3  r  r  r  r  row1row2tup1tup2s                r7   4test_roundtrip_map_array_with_pydicts_duplicate_keysr    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  r   r3  )r   rP  r_  rD  r  r  )r   r)   r   r  r  r   rP  r_  rD  r  r  r   r   )rE   rb   ri  r  r'  r   r   r0  r  rI   r.   rc   r   r  r0   r  )
r  r(  rb  r  r  r  r  r  r  r  s
             r7   %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_columnr`   )r.   rc   r   rE   rY   rb   r  rI   ra   rR   rd   )r  rY   	table_colrZ   s       r7   )test_table_column_conversion_for_datetimer  G  s    
 YYr}}VQ;LM-/FHH'&)9:;E./I  "F;;++++66*rj   c                      t        j                  t        j                  ddd            } t        j                  |       }|j                         }t        j                  ||        y )Nr  r)   r~  r  )r.   rc   r   rE   rb   rI   rR   rd   )r  rh   rZ   s      r7   "test_array_conversion_for_datetimer  V  sI    
 YYr}}VQ;LMNF
((6
C]]_F66*rj   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 )Nrh  TrX  r   r   r  )r  r  )	rE   rG   rH   r[  r  rR  rR   rS   rI   )rT   r:   tabrR  s       r7   	roundtripz-test_nested_chunking_valid.<locals>.roundtriph  sr    hh""2f"5$ ZZ]--
A~~
cmm$<D , FGI	Krj      0i T*r?  struct_fieldr  r  lossolr   r  rh  r  )	r.   r/   rE   r!  r  ri  r  rI  r:   )	r  r6   r  r  r  r  
map_of_losmap_typer:   s	            r7   test_nested_chunking_validr	  b  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rj   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.   r/   rE   rG   rH   r   rI   rJ   ru  s     r7    test_bytes_column_name_to_pandasr    sl    	SzC:.'8J	KBHH  $E&&!1111??##B'''rj   c                  .    t        j                  d       y )Nzarrow_39313.py)	test_utilr   r  rj   r7   !test_is_data_frame_race_conditionr    s     ,-rj   )r  )NFNTNFF)NNr  r  )r   N)r  r   r  multiprocessingr  r  rN   collectionsr   r   r   r   r   r   
hypothesisr3  hypothesis.strategies
strategiesr5  r   numpyr0   numpy.testingrJ  rx   r	   r:  rC  numpy.exceptionsImportErrorpyarrow.pandas_compatr
   r   pyarrow.tests.utilr   r   r   pyarrow.tests.strategiestestsr7  utilr  pyarrow.vendored.versionr   pyarrowrE   r   r  pandasr.   pandas.testingrR   pandas_examplesr   r   r  
pytestmarkr8   r\   ri   ru   r{   r}   r  r  rL  rN  rP  r<  r  r  r  r  r  r  r  rI  rR  rV  r[  r  rc  r4  r  pandas_compatible_typesre  ri  rk  rp  rr  rt  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  rI  r  ri  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&  ExtensionTyper(  r?  rI  rT  r^  r`  re  rj  ro  rq  rv  rx  r}  r  r  r  r  r  r  r  r  r  r  rE  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  rj   r7   <module>r%     s   $ 
    
  # > >  " 

(*(D(D% @ A A ' ' & & , 	%	L [[
> <A,059+0%*	=>
& 8< $K0-j4 j4Zb bJ	 IK.K.& IK,K,,}	$ }	$H~- ~-Be1 e1Pn	( n	(b`: `:F94 94xBAQ% Q%h +. 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!JH
)9X
--02,j($:))  I'4, HF
"** 
!H92,21
8 3c
"34, 5,"-. - -8f"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( . .[c  
	
 	

  	B  		  		sS   
X W9 X 	X% 9XX XX XXX"!X"%X.-X.