
    g                       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 Zejn                  j                  ddddgg      d        Zd Zejn                  j`                  d        Zd Zd Zd Zd Zd Zejn                  j\                  ejn                  jS                  d      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        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     N/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/test_pandas.py_alltypes_exampler8   C   sh   << 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#DOqCFO#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##C}""h. ( 5 5rvvtn E $ 
	 	 	"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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')(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\\+&#B379 '& '& '&s   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  sr     \\"))//!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                 ^   t        j                  g dt         j                  j                  g dg dgd dg      g d      }t	        j
                  t              5  t        j                  j                  |d	      }d d d        j                  j                  }|d
   \  }}}}}|d   dk(  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_nameNoner   index_columns)r.   r/   r   r   r   r   r   rE   rG   rH   r:   pandas_metadata)r   rT   tjscol1col2col3idx0r   
idx0_descr	foo_descrs              r7   test_index_metadata_field_namez2TestConvertMetadata.test_index_metadata_field_name`  s   \\9--++ ),Um ,  5
 \\+&$$R$=A 'XX%%&(m#dD$F|s"""F|tL1111F|###L!V+++F|2222F|tL1111 "? 3
I0000L!Z///F|###E!!!< I---6{i'''- '&s   "D##D,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   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	  unicoder  r   encodingUTF-8)
r.   r/   r   r  rE   rG   rH   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+x777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  sE    \\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   r(  
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2      ?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7D$f5BJ k*$$R( + wwyH!zz0077<Hk*'X7;= +* 8 +*
 +*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_rowsrL  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   rI  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:   rQ  rK   r   r	  zlist[int64]r  r?   )
r.   r/   rE   r:   r   list_r   rG   rH   r   )r   rT   r:   rY   r   rT  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?   rS  )r   rT   rY   r   s       r7   test_struct_metadataz(TestConvertMetadata.test_struct_metadata0  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.12343437128rQ  rK   r   r	  r   r  r?   r        )	precisionscale)	r.   r/   r   r   rE   rG   rH   r:   r   )r   rU   rY   r   rT  s        r7   test_decimal_metadataz)TestConvertMetadata.test_decimal_metadata6  s    << =>!>??!
  $$X.\\))b   mA&=)Y666<(H444:&R*HHHHrj   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   皙?皙?g333333?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_metadataE  s     w7lA:KLN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!N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_multiindexZ  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   c1r`  c2rK   r?   zlist[unicode])ra   r   r  r  r	  zlist[empty])r   rE   rb   rb  stringrF   r   r  rs   keysrG   r0  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_metadatah  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_versionrS  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   ra  )r.   r/   r   rE   rG   rH   r[  	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1I##33???((*F!!&(3 2rj   N))__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r%  r*  r5  r7  r=  rG  rN  rU  r]  rc  rf  rn  r|  r  r  r  r   rj   r7   r}   r}      s    *
9 
@9
9	9*6,=9	99$9
=9 (D&")&4$99%
"9
="$&
95	05HI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  sa   
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:   r.  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   isnan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  st   } 2779bhhj1288:rxxz 2288:ryy{ 3299;$		!4${BIIK&@
 
".E;88E?DYY&&s488RXXbgg5F5J5J'K'*488RXXbgg5F5J5J'K,6e ' EF !--.DKMM"((5+67 #/ \\$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 "E))Be4DK "\\$# kkmF((6"C==?fmmo555 $rj   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   r(  NotImplementedError)r   
int_dtypesr  orderr   r  rh   s          r7   test_integer_byteorderz0TestConvertPrimitiveTypes.test_integer_byteorder)  s    E
Bxx
%"*=#T#A#Y/Fzz** hhtn"}}$++-???#]]+>?"$((4.C @? 0   @?s    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_nulls7  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   r`  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_castT  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_nullsg  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   r(  rE   ArrowTypeErrorru   r   )r   re   rU   expected_msgs       r7   test_boolean_objects_to_intz5TestConvertPrimitiveTypes.test_boolean_objects_to_int  sc    II59H99_q013]]2,,LA"1xbhhjI BAAs   "!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   r`  )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BXXab)Fxx 2<H==***{A./BYYb 9:;FXX))"V9> * @F!9??1%,,X666 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   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 )Nr`  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                 Z   t        j                  dt         j                  gt         j                        }t	        j                  |t	        j                               }|j                         \  }}t        |t         j                        sJ |dk(  sJ t        |t         j                        sJ t        j                  |      sJ t	        j                  |t	        j                         d      }|j                         \  }}t        |t         j                        sJ |dk(  sJ |J y )Nr;  r   r`  Tr_   rH   )r0   rb   rM   r  rE   r  r   r  )r   rh   r   r6   ys        r7   test_half_floats_from_numpyz5TestConvertPrimitiveTypes.test_half_floats_from_numpy  s    hhRVV}BJJ7HHSrzz|,{{}1!RZZ(((Cxx!RZZ(((xx{{HHSrzz|>{{}1!RZZ(((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  r!  r$  r&  r+  r/  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_optionr8    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 r1  )r0   r2   r  rE   rb   r5  r$  r.   r/   rG   r   rI   rR   rS   )r   r  r  rs   rb   rU   rY   rZ   s           r7   &test_table_integer_object_nulls_optionr:    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_nulls  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 )Nr>  )r?  NrA  r&   r   r  r  rB  rC  s       r7    test_timestamps_notimezone_nullsz=TestConvertDateTimeLikeTypes.test_timestamps_notimezone_nulls  rE  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 )Nr?  r  z0pandas < 2.0 only supports nanosecond datetime64r>  )2007-07-13T01:23:34.1232006-01-13T12:34:56.4322010-08-13T05:46:57.437zdatetime64[]r   
US/Easternr?  Nr@  rA  )r   r.   rB  r   rC  r/   r0   rb   r  r  r\   ri   )r   rH  rT   s      r7   test_timestamps_with_timezonez:TestConvertDateTimeLikeTypes.test_timestamps_with_timezone,  s    2>>"WW%55$$,KKJK\\"(( $+ $D6+	-
  l+..::<H<#< 01 \\"(( $1
 $D6+-
  l+..::<H<#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   r  TimestampArrayrI   rR   rS   )r   r6   
date_arrayrT   rY   rZ   expected_dfs          r7   test_python_datetimez1TestConvertDateTimeLikeTypes.test_python_datetimeI  s    DI"INIqhnn&)::I
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pytzrP  r   r   r     -   tzinfor   )	r   importorskiputcr   FixedOffsetr   r.   r/   r\   )r   r[  r   rs   rT   s        r7   %test_python_datetime_with_pytz_tzinfozBTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_tzinfo\  sp    ""6*88T]]<8$:J:J1:MNBtQ2r2bABFz623B#B' O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  r\  r]  r^  r   FrC   )r+   r   rC  r   r.   r/   r\   )r   r   rs   rT   s       r7   'test_python_datetime_with_pytz_timezonezDTestConvertDateTimeLikeTypes.test_python_datetime_with_pytz_timezoned  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 )Nr[  r   )r   r   r   r  r\  r]  r^  r   r   Tr   )hours<   r   )
r   r`  r   r   ra  r.   r/   r\   r   rb  )
r   r[  r   rs   rT   rj  tz_timezonetz_pytz
values_expdf_exps
             r7   )test_python_datetime_with_timezone_tzinfozFTestConvertDateTimeLikeTypes.test_python_datetime_with_timezone_tzinfom  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   
MyDatetimers    s    Jrj   ru    r   r   r   r   r%   )r   r.   r/   rc   r?   rE   rG   rH   r   r  rV  rI   to_datetimerR   rS   )r   ru  rW  rT   rY   rZ   rX  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}  rv  r   r   r   r   )r   r.   r/   rc   r?   rE   rG   rH   r   r  Date32ArrayrI   r0   rb   rR   rS   )r   r}  rW  rT   rY   rZ   rX  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  r\  r`  date32)
rE   rb   r   chunked_arrayrI   ArrayrH   r  rJ   r[  )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  rk  r  rl   r_   )
r0   rb   r.   rw  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 )Nrv  r       r)   rj  )
2000-01-01Nz
1970-01-01z
2040-02-26datetime64[D]r   r?  r&   coerce_temporal_nanosecondsFdate_as_objectr  )r   r0   rb   r   r.   rB  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  s6    T1a T1a T1b!#  "07FH 2>>"WW%55-N88 +2@B 88D>##TF+- C]]|]LF(//7L<<<#5#5555""6<8]]%?K # MF<<8>>111""684 rj   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   rv  r   r  r  r)   rj  Fr   r  Trg  )
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   rI  rJ  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 )
Nrv  r     TFr  r  r   r  r  )r   r   r.   rc   rE   rb   r[  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 )Nrv  r   r  r   ra  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:   rX  rY   	result_dfr  r  s	            r7   &test_table_coerce_temporal_nanosecondszCTestConvertDateTimeLikeTypes.test_table_coerce_temporal_nanoseconds  s     T1a (4A"67BHHVZ89:llFD>2"((4.)&9OO(,U $ D	:t$)BKT;7GGI
i););M)J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   rv  r   r  r  r)   rj  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_infer*  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  r,  lC  mC  r   r    \&)FTFFr`  r  r  r  )z
2017-04-03
2017-04-04r  z
2017-04-05r  r   r$   )r  r  r   F)r  r?   )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_typedC  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NArv  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_valuest  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  r`  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   rJ  r   r   timesr   r`    r  r  rI  microsecond@B re   )r   rE   time64r0   rb   r?   r_   r  r.   r/   rF   rH   rJ   _pytime_to_microsr$  time32rL   )r   pytimesr  aobjsparrrT   r4  vrh   r  r)  a3a4s                r7   test_pytime_from_pandasz4TestConvertDateTimeLikeTypes.test_pytime_from_pandas  s:   1a&1a&( YYt_D6)8xxyyBAw}}'!*,,,Aw}}'!*,,,Aw}}&&& \\7E*+**2.Qxt$$$ hhg>g)!,g>$& 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   FFTrJ  r  r  r  rI  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   r4  expected_valuesresult_pandasrT   rX  s                      r7   test_arrow_time_to_pandasz6TestConvertDateTimeLikeTypes.test_arrow_time_to_pandas  s   1a&1a&1a=" 88GBQK4&01hh)0! 6)4A !"		d	 ;)4 6 $v & ' XX(/5(31  !yyQy7(35#f% &
 hhg>g)!,g>$&hhg>g)!,g>$& HH1>	XXc			$@XXcDjy99T?, XXsTz))$/i99T?,XXsW},,T299S>+ H**BB+;UC&((^&((^&(+%6&(*%5%7 C  MMOM!((O;@@BBB%7 __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 )
NrQ  r&   r   )z2007-07-13T01:23:34.123456Nz2006-01-13T12:34:56.432539z2010-08-13T05:46:57.437699r%   )rL  NrM  rN  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 )Nr?  z0pandas >= 2.0 supports non-nanosecond datetime64r   rI  )rH  )r   r.   rB  r   rC  rE   rb   r  rc   rw  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   rI  rJ  )Nr  r   r  r   z'would result in out of bounds timestampr  Tr  F)r.  r  )
rE   rb   r   r  rY   r   r(  r)  rI   column)r   rH  r   rh   rY   msgs         r7   &test_timestamp_to_pandas_out_of_boundszCTestConvertDateTimeLikeTypes.test_timestamp_to_pandas_out_of_bounds  s(    &D0hhAq 12BLL"4MN#s,?]]:S9MMdMC : ]]:S9OOOE : ]]:S9LL%//D/Q : 5dKUMS!++D , B' 1 & :9 :9 :9s$   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   rJ  r`  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_chunked/  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   r`  r  )r   r   datetime64_ds      r7   test_numpy_datetime64_day_unitz;TestConvertDateTimeLikeTypes.test_numpy_datetime64_day_unit6  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_mask@  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:00Frg  )r.   r/   	Timestampr  r\   r   s     r7   test_fixed_offset_timezonez7TestConvertDateTimeLikeTypes.test_fixed_offset_timezoneM  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 )	Nr?  r  timedelta64)r   l     qa    @B1timedelta64[rO  r   r  r   r.   rB  r/   r0   rb   rE   r   durationr:   r\   r   rH  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 )	Nr?  r  r  )r   Nr  r  rO  r   r  r  r  s        r7   test_timedeltas_nullsz2TestConvertDateTimeLikeTypes.test_timedeltas_nullsm  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  )rT  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  rD  rG  r   markparametrizerR  rY  rc  hgivenstnonepast	timezonessettingsrh  rp  rx  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   rB  r  r  r  r  r  rj   r7   r<  r<  	  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   r<  c                   0   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d Z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                               }t	        j                  |g      }g d}t        j                  d||z  i      }t        |||       y )Nr  r   rI     mañanastrings)r   NrI  r,  Nr  )	r0   rM   r.   r/   rE   r   r  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BIIK0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   )   quxr2  Nr3  r4  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   r:  c                    |dz  }|dz  }t        j                  d|ggdz  |ggz   dggz   i      }t        j                  |d   d      }|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 )Nr;  r<  r-  r=  r:  Tr  fullr)   r      r   )
r.   r/   rE   rb   validater   r>  r?  r   r  )r   rC  r@  rA  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 )Nr2     bar   heyr-  r   ra  r   )r5  r.   r/   rE   r:   r   r6  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)r2  Ns   baNNrL  r-  r   ra  )r.   r/   rE   r:   r   r6  r   r(  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  sq    :\\9f-.BHHY		!=>?]]2??+HH  F 3 ,++s   <"B''B0c                 p    t        j                  g d      }t        |t        j                                y )N   123rj   r9  Nrf   )r.   rc   ri   rE   r6  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 )NrS  rj   r9  rT  rg   )r.   rc   r5  ri   rE   r6  rU  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 NrR  rT  r   ra  )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   NrT  r   ra  )r.   rc   ri   rE   large_stringr/   r\   r:   r]  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 r[  )r.   rc   ri   rE   binary_viewr/   r\   r:   r]  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 r`  )r.   rc   ri   rE   string_viewr/   r\   r:   r]  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-  ra  Fstrings_to_categoricalTrg  )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 )Nrk  r-  ra  
categoriesTrg  )r-  )r.   r/   rE   r   r  r:   rG   rH   rn  rI   rR   rS   tuple)r   rs   rT   r   r:   rY   expected_strexpected_catro  r   result3result4s               r7   test_selective_categoricalsz6TestConvertStringLikeTypes.test_selective_categoricals  s   %\\9f-.BIIK0E7#$$R$7||Y$78||Yv0F$GH//i[/9
g|F//R/0
g|F//\/:
g|F//UW/5
g|Frj   c                     t        j                  g t        j                               }t         j                  j	                  |gdg      }|j                  dg       y )Nr`  r[   r  r   rt  )rE   rb   r   rG   r   rI   )r   rb   rY   s      r7   &test_to_pandas_categorical_zero_lengthzATestConvertStringLikeTypes.test_to_pandas_categorical_zero_length!  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   rI  r[   r}  rt  )rE   rb   dictionary_encoderG   r   rI   rJ   )r   rb   rY   rZ   s       r7   ,test_to_pandas_categories_already_dictionaryzGTestConvertStringLikeTypes.test_to_pandas_categories_already_dictionary(  sd    56HHJ$$UGE7$CUG4 ''///rj   c                 6   g d}t        j                  d|i      }t        j                  dt        j                               }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        y # 1 sw Y   y xY w)N)r   r   r   r   r   r-  ra  Trl  rg  rm  zero_copy_only)r.   r/   rE   r   r  r:   rG   rH   rI   rn  rR   rS   r   r(  rO  r   rs   rT   r   r:   rY   rZ   rU   s           r7   (test_table_str_to_categorical_without_nazCTestConvertStringLikeTypes.test_table_str_to_categorical_without_na/  s    *\\9f-.BIIK0E7#$$R$7=<<BNN6,B CD
fhDA]]2??+OO4+/  1 ,++s   2DDc                 V   d ddt         j                  g}t        j                  d|i      }t	        j
                  dt	        j                               }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        y # 1 sw Y   y xY w)	Nr   r   r-  ra  Trl  rg  r  )r0   rM   r.   r/   rE   r   r  r:   rG   rH   rI   rn  rR   rS   r   r(  rO  r  s           r7   %test_table_str_to_categorical_with_naz@TestConvertStringLikeTypes.test_table_str_to_categorical_with_na>  s    S"&&)\\9f-.BIIK0E7#$$R$7=<<BNN6,B CD
fhDA]]2??+OO4+/  1 ,++s   DD(c                     t        j                  t        j                  dgt              t        j                               }|j
                  t        j                         k(  sJ y )Nr:  r   )rE   rb   r0   r?   r  r_   )r   	converteds     r7   test_array_of_bytes_to_stringsz9TestConvertStringLikeTypes.test_array_of_bytes_to_stringsN  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   r(  rE   librO  rb   r0   r?   r  r   s    r7   'test_array_of_bytes_to_strings_bad_datazBTestConvertStringLikeTypes.test_array_of_bytes_to_strings_bad_dataU  sQ    ]]##-/ HHRXX{m6:BIIKH/ / /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)r2  rK     bazz|S3r   r   r`  FTFr  )r2  Nr  z)Got bytestring of length 3 \(expected 4\)r  r   z*Got bytestring of length 12 \(expected 3\)z|U3)
r0   rb   rE   r6  r  rJ   r   r(  r  rO  )r   rh   r  rU   rl   s        r7   ,test_numpy_string_array_to_fixed_size_binaryzGTestConvertStringLikeTypes.test_numpy_string_array_to_fixed_size_binary[  sh   hh/u=HHSryy|4	88DIBIIaL9)))xx,-HHSryy|$?	8821F)))]]266..!MO((35ACHHSryy|,O
 ]]##CE ((35ACHHSryy|,	E EO O
E Es   :AH5AHHHN)r  r  r  r/  r8  r   r  large_memoryrB  r   rI  rM  rP  rV  rY  r^  rc  rf  ri  rr  r{  r~  r  r  r  r  r  r  r  rj   r7   r*  r*    s    	O	. [[( (  [[[[Vc4[1& 2 &*46A>>==DG$,011 -I-rj   r*  c                      e Zd ZdZ ej
                  d       ej
                  d      gZ ej
                  d       ej
                  d      gZ ej
                  d       ej
                  d      gZe	j                  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y)TestConvertDecimalTypesz,
    Conversion test for decimal types.
    z	-1234.123z1234.439z-129934.123331z129534.123731ri  z-314292388910493.12343437128)rs   r  r   r   	decimal32)idr  r   	decimal64rj  rk  
decimal128c                 2   t        j                  d|i      }t        j                  j	                  |d      }t        j
                  d|      }t        j                  |g|j                  j                        }|j                  j                  |      sJ y )Nrh  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 )Nrh  )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)   r`  z1.2345r   )r   r   rE   r  r   r(  rO  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   r`  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 )N3.14r  r   rT  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 )Nr  r   r)   rX  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   N)r  r  r  r  r   r   r  r  r  r   r  r   paramrE   r  r  r  r  r  r  r  r  rj   r7   r  r  s  sv    	$
#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	$rj   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   Fr  r`  )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jjF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   r`  r   r)   r   )
r0   rb   r1   r?   rE   rb  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 )NTFr`  r   r   r   rm   )rE   rb   rb  r  rG   r   rI   r.   r/   rR   rS   rd   rc   )r   rb   rY   rT   rX  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   r:  z3.3r)   r   r`  r   r   )rE   rb   r   r   rb  r  rG   r   rI   r.   r/   rR   rS   )r   rb   rY   rT   rX  s        r7   test_column_of_decimal_listz0TestConvertListTypes.test_column_of_decimal_list  s    7??3/1EF"??5124 hhr}}Q':;= $$eWVH$=__llws+W__S-ABu-.0 12 	b+.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   r`  )r.   rc   r0   rb   rM   r?   rE   rb  r   
large_liststructr   rJ   r   r(  	TypeErrorrs   )r   re   r   rZ   rU   s        r7   +test_nested_types_from_ndarray_null_entriesz@TestConvertListTypes.test_nested_types_from_ndarray_null_entries	  s    IIbhh/v>?88BHHJ'==,99bhhtW5679B XXab)Fxxt26H==***y)+ *)9 *)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_lists  s    )+
F66J$$Ru$M !..u||/D/DE||""?333jjF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 )Nr_  )r   r   r   r   r)   r   )	r.   rc   r0   rb   floatrE   rI   rR   rd   )r   	num_listsre   r  rh   rZ   s         r7    test_column_of_lists_first_emptyz5TestConvertListTypes.test_column_of_lists_first_empty$  st    L"qc:	iHiBHHQe4i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   ra  )r.   r/   r0   rb   r?   rE   r:   r   rb  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_chunked,  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   ra  )r.   r/   r0   rb   r?   rE   r:   r   rb  r   rG   rH   rI   rR   rS   )r   rT   r:   rY   rZ   s        r7   "test_empty_column_of_lists_chunkedz7TestConvertListTypes.test_empty_column_of_lists_chunkedE  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  rk  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_chunked2S  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_stridede  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_   rb  r  )r   r   rh   rU   r  s        r7   test_nested_lists_all_nonez/TestConvertListTypes.test_nested_lists_all_nonen  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_   rb  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_   rb  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   r`  r  )
r.   rc   r0   rb   rE   rs   rb  r   rJ   r   )r   r   rZ   r   rU   data3ry  	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   r#  r   strsr   r   dnested_strsr  )r   r0   rM   r.   r/   rE   r:   r   rb  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  rk  r`  )rE   rb  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0KD%|}$}""4/ 1rj   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 )Nr#  r   r   r   r)   r   r  )r   r0   rb   r   r.   r/   rE   r:   r   rb  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   rb  r  StructArrayr   	ListArrayr.   rc   rI   rN   rO   rP   rQ   rR   rd   )r   r#  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>>+, $$&##H.M$68""684 '&&s   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.dev0r?  $Regression in pandas with numpy 1.25r   r   r   rI  r   r  rX  r1  Nquuxr  quzr  gr@   rA   )r   r0   rB  r.   r   rC  rE   rb   rb  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? $$&##H.M$68""684 '&&s   ,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  r?  r  )r@   r   rI  rX  r1  r  r@   r   r   r@   r   r   r   r  Nr  r)   r   r)   r   r   r   rI  rX  r  rA   )r   r0   rB  r.   r   rC  rE   rb   slicerb  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_sliced  s   
 R^^$(>>(77+;; KK>?xx 2 3385A; 	Z(c3Z#sRc{SHHRYY[!
 %1+ 	 kk%%iu=ll&&y#699sCj!EC:#678bk=)*
 
 		!Q113))bk=)*%
  $$&##H.M$68""684""=/B	 '&&s   ,AG==Hzt,data,expectedr   r)   r   Naaabbr   c                 d   t        j                  g d      }t        j                  |      }t        j
                  j                  ||t	        j                   |                   }t        j
                  j                  |t	        j                   |                   j                  |      sJ y )Nr  r  r`  )	r0   rb   r.   rc   rE   r  rH   rb  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_mask	  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   r:  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_roundtrip9	  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 )Nr`  )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_arraysE	  sx    *,
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   r`  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?   rU  s     r7   test_nested_large_listz+TestConvertListTypes.test_nested_large_listN	  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  ccr`  s   aas   bbs   ccFrm   )rE   rb  r  rb   r\  rI   rR   rd   r.   rc   rb  )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   rI  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_dictionaryl	  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#  TrE  r   r)   i r   )r.   r/   r  r  r0   zerosr4   rE   rG   rH   rH  r?  r   r  )r   nrT   rY   column_as        r7   #test_auto_chunking_on_list_overflowz8TestConvertListTypes.test_auto_chunking_on_list_overflowy	  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r9  r      br)      cr      dr      er   )   fr      gr   r  ra  )r.   r/   rE   r:   r  r6  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 )
Nr:  r;  r=  r?  rE  r)   r`  Frm   )rE   rb   r  r6  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 )Nr:  r;  )r@  rB  )rD  NrE  r`  Frm   )r  r.   rc   rE   rb   r  r6  r   rI   rR   rd   )r   r   rI  rJ  r  rU   rh   rL  s           r7   test_map_array_with_nullsz.TestConvertListTypes.test_map_array_with_nulls	  s    I&4 =AB<@Ss KNN#$!QaQ]q=#N,01<@ 	 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   rL  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0KD%}u}$}&&tU3	 1 2r2r2r266"B!CDvay~~}=#))!Q/88:88Yq"&&k:(K}h7KD%}u}$}&&tU3	 8 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   r]  r   Nr  )rR  rs   rl   Fr  r   r   r   r?   r   )
rE   r  r   rb   rU  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0KD%}u}$}&&tU3	 1rj   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   rR  sizesrs   r   r)   r   r   r   r   r   rE   rb   rI   r.   rc   rR   rd   r   rX   rh   rL  rU   s        r7   .test_list_view_to_pandas_with_in_order_offsetszCTestConvertListTypes.test_list_view_to_pandas_with_in_order_offsets	  z    HHY'((9%88./   
 99q!fq!fq!f56
vx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   ra  rb  rc  r   r   r   r   r   r)   re  rf  s        r7   2test_list_view_to_pandas_with_out_of_order_offsetszGTestConvertListTypes.test_list_view_to_pandas_with_out_of_order_offsets	  rh  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   rb  rc  r   )r)   r   r   r   )r   r   r   r   re  rf  s        r7   1test_list_view_to_pandas_with_overlapping_offsetszFTestConvertListTypes.test_list_view_to_pandas_with_overlapping_offsets
  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  rR  rd  rs   rl   )
r   rE   rb   rI   r.   rc   r0   rM   rR   rd   rf  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   ra  r   rc  )r   r   r   )r   r   r   )r   r   r   Nr  rn  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_startrK  r  rh   rL  rU   	bytes_ends	            r7   (test_list_view_to_pandas_multiple_chunksz=TestConvertListTypes.test_list_view_to_pandas_multiple_chunks!
  s%   


..0  HHY'((9%88L) ! 

   HHY'((9%88O,./	 ! 
 d|,99q!fq!fq!fi!QQUVW
vx0,,.	K'''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  r   r&  r(  r+  r/  r3  r  r8  rG  rM  rO  rS  rZ  r_  ListViewArrayLargeListViewArrayrg  rj  rl  ro  rv  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 )Nre  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_roundtripD
  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   r`  )r   Nr   )TFN)r#  r  r  r   Tr)   Fr   r   )rE   rb   r   r  r  r  r   r.   rc   rI   rR   rd   )r   r#  r  r  rh   rU   r  s          r7   test_to_pandasz%TestConvertStructTypes.test_to_pandasQ
  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   r`  r)   r#  )rq  rr  rE   rs  rb   r   r  r   r  r.   rc   rI   rR   rd   )
r   rt  ints1ints2rK  r  rh   rU   r  ru  s
             r7   test_to_pandas_multiple_chunksz5TestConvertStructTypes.test_to_pandas_multiple_chunksb
  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_titler.  r.  r   r`  )r  T)+   Fr  T)r6   r.  r  Fr  r  )	r0   r   r   r  rE   r  r   rb   r  r   r  r   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yyr.  zl        r  r   r   r`  ))r   Tr)   r   ))r   Fr   rI  r   T)r  r  r)   r   )r6   r.  r  r   Fr   rI  )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   )r.  r?   i      .r   r.  ru  Tr-  rE  r)   c              3   N   K   | j                         D ]  }|E d {     y 7 wr  )
iterchunks)rh   r  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   r.  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  r5  r2   random_samplerM   rE   r  r   r6  rb   rH  r?  )r   target_sizer  bsblockr6  r   r   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   r.  r  r   zMissing field 'y'r  r`  zExpected struct array)rE   r  r   r   r  r0   r   rb   r   r(  r)  r  )r   r   r  r   s       r7   test_from_numpy_bad_inputz0TestConvertStructTypes.test_from_numpy_bad_input
  s    YYbhhj1bhhj13 4XXRXXRXX( ) xx"%]]:!46HHT#6 xx|]]9!8:HHT#: :	6 6: :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   rX  struct_typerh   rV   s         r7   test_from_tuplesz'TestConvertStructTypes.test_from_tuples
  s    \\8ff%567llaa(*:;<> ii#rxxz!2S"((*4E FGjjH&+h/k	C ))h%<$=>_+	-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 )	Nr#  r  )  i  r  )r   r   Nr   c              3   <   K   | ]  }|j                           y wr  )r  ).0r2  s     r7   	<genexpr>zCTestConvertStructTypes.test_struct_of_dictionary.<locals>.<genexpr>  s     GhUu0hs   )r   Nr)   r   )rE   rb   r  r  r   r  r  r.   rc   rR   rd   rI   r1  )r   r   childrenrh   rows_as_tuplesrI  rows_as_dictsrU   s           r7   test_struct_of_dictionaryz0TestConvertStructTypes.test_struct_of_dictionary  s     HH_-??AHH12DDFHnn(((? GhGH:HI.3c%o..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   rz  rz  ?
  sa    I1"(6+>?4 [[[[5  5n$-":rj   rz  c                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestZeroCopyConversionz@
    Tests that zero-copy conversion works with some types.
    c                     t        j                  g d      j                  d      }t        j                  |g d       y )Nr   Tr^  rw   )r   rZ   s     r7   test_zero_copy_successz-TestZeroCopyConversion.test_zero_copy_success'  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   Tr^  Frm   )rE   r/  r   r0   rb   rI   r.   rn  rR   rd   rc   )r   rh   rZ   rs   s       r7   test_zero_copy_dictionariesz2TestZeroCopyConversion.test_zero_copy_dictionaries+  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   Tr^  r0   rb   rE   rI   rx   ry   r   rh   rZ   s      r7   test_zero_copy_timestampz/TestZeroCopyConversion.test_zero_copy_timestamp7  s@    hh~-=>#(((=vs+rj   c                     t        j                  dgd      }t        j                  |      j                  d      }t	        j
                  ||       y )Nr   r(   r   Tr^  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)NTr^  )r   r(  rE   rO  rI   r   rh   s     r7   check_zero_copy_failurez.TestZeroCopyConversion.check_zero_copy_failureA  s,    ]]2??+MMM. ,++s   A  A	c                 P    | j                  t        j                  g d             y )N)ABCr  rE   rb   r  s    r7   &test_zero_copy_failure_on_object_typesz=TestZeroCopyConversion.test_zero_copy_failure_on_object_typesE  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_nullsH  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_nullsK  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_typesN  s    $$RXXtUm%<=rj   c                     t        j                  ddgddggt        j                  t        j                                     }| j	                  |       y )Nr   r)   r   r  r`  )rE   rb   rb  r   r  r  s     r7   $test_zero_copy_failure_on_list_typesz;TestZeroCopyConversion.test_zero_copy_failure_on_list_typesQ  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_nullsU  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_nullsY  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  "  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  d  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   r`  )
type_pairsr0   rb   r   ru   )r   	dtype_strpa_typerh   s       r7   test_empty_arraysz!TestConvertMisc.test_empty_arrays  s8    "&//Iw((2RXXi%89C"3W5 #2rj   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   rI  r1  )r   r   r   r   r   r2  rK  r4  rt  )rI  r1  r   Tru  r  )
cat_stringscat_strings_with_nacat_ints
cat_binarycat_strings_orderedr#  r  r-  strings2strings3)r0   rM   r.   rn  r/   r\   ru   )r   r.  r@  rA  v3r  rT   rJ  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   rp  r   r   rt  Tr  )r.   rn  )r   r  r  rh   s       r7   "test_category_implicit_from_pandasz2TestConvertMisc.test_category_implicit_from_pandas  sM    	D NN?SzBNN?Sz#')

 C3K rj   c                 n    t        j                  dt        j                  g       i      }t        |       y )Ncat)r.   r/   rn  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   rt  r   )rE   r  r   r  
dictionaryr   rI   r.   rn  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NNGU  R]]2779g%FGA[[]F~~bRXXb5NOH""299V#4bii6IJHHc1X&E__&F||S(O4H!!&(3 Orj   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   r(  rE   rG   rH   )r   r   
error_typerT   r  s        r7   test_mixed_types_failsz&TestConvertMisc.test_mixed_types_fails  sC     \\$?]]:S1HH  $ 211s    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 )Nrp  )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_import  s   !1A.335;& (I((*%%h/^229=> +* ( 	RXXq1uFA|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_series  sc    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_schema#  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_dataframe4  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 )Nr`  r   r   )rE   rb   r   r.   rc   r0   r?   rR   rd   rI   r  rb  r  r   )r   rh   empty_objectss      r7   test_convert_empty_tablez(TestConvertMisc.test_convert_empty_tableA  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   r.  )r  r,  )r)   r   )r   r`  r  r)  r,  r)   N)r0   r   r   r   rb   r  rE   r  )r   r   r   rh   s       r7   test_non_natural_stridez'TestConvertMisc.test_non_natural_strideM  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   r,  r)   r`  )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_arrayZ  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  ra  Fr  )r.   r/   r  r0   linspacerE   r:   r   r  r   r   r(  r)  rG   rH   r  r_   r  s       r7   test_safe_unsafe_castsz&TestConvertMisc.test_safe_unsafe_castsa  s    \\eQ1%
 
 HHS"))+&HHS"((*%
 
 ]]:&HH  F 3 ' $$RU$C||C %%333	 '&s   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   r(  r  rE   rG   rH   r   s     r7   test_error_sparsez!TestConvertMisc.test_error_sparses  s    	EsBII$9$91bffa.$IJKB ]]9,@AHH  $ BA  	EsBNNArvvq>$BCDB	E BAs   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  r6  rb  r  r  r  r  r  r   r  	processes	threadingr  r  r  r  r  r   r  rO  r  r  r  r"  r$  r'  r*  r-  r1  r5  r  rj   r7   r  r  j  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_   r.  r`  )r.   rc   rE   r  rH   r   rb   rJ   )rs   rh   rU   s      r7   *test_safe_cast_from_float_with_nans_to_intr:  ~  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   rI  r   r  ra  rP  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_examplerC    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   r2  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 )Nr?  r@  rA  r   )r   r.   rB  r   rC  r/   rE   rG   rH   rI   rJ   r:   r  )rK   rT   table1table2s       r7   !test_roundtrip_with_bytes_unicoderG    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  rk  )r   )valr  secondsminutesrj  s        r7   _pytime_from_microsrL    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  rS    s    rj   r  r   r
  r  )r.   r/   r   r(  r)  rE   rG   rH   )r  rT   r  s      r7   +test_convert_unsupported_type_error_messagerT    sZ      
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_roundtriprV    s5    Axxd;H??3rj   c                 X    t        |       D cg c]  }t        d       }}||z  S c c}w )Nr  )r4   r   )nuniquer.  r  unique_valuess       r7   _generate_dedup_examplerZ    s.    (-g71U2YM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_nuniquer\    s+    s#s!1s#$000#s   )c                  |   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 )Nr  r  r`  Fdeduplicate_objects)	rZ  rE   rb   r6  r  r  r\  rI   r   )rX  r.  rs   rh   s       r7   .test_to_pandas_deduplicate_strings_array_typesr`    s    GG$Wg6Fbiik2bggi0  &&!124 	1%@#c(K	4rj   c                  n   d} d}t        | |      }t        j                  |      }t        j                  j	                  |gdg      }t        j
                  j                  |g      }||fD ]G  }t        |j                         d   |        t        |j                  d      d   t        |             I y )Nr  r  r   Fr^  )
rZ  rE   rb   rF   r   rG   r0  r\  rI   r   )rX  r.  rs   rh   r  r  r  s          r7   .test_to_pandas_deduplicate_strings_table_typesrb    s    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)   Tr3  F)r4  r_  r   )r  r0   r2   r  rE   rb   r\  rI   )rX  r.  rY  rh   s       r7   .test_to_pandas_deduplicate_integers_as_objectsrd     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  r`  r_  Fr  )r  r4   rE   rb   r[  r\  rI   r   )	rX  r.  rY  r  raw_type
array_typepandas_optionsraw_arr
casted_arrs	            r7   $test_to_pandas_deduplicate_date_timerk    s    GGw(M 
(-t45	(-t45	,#	,#E 16,*n((=72B\\*-
,
,,>~>	!,
,, ? ?/=?J	) 16rj   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   ra  )r.   r/   r0   rM   rE   r:   r   r    r  r   r(  r)  rG   rH   )rT   r:   s     r7   /test_table_from_pandas_checks_field_nullabilityrn  ,  s    	OVVXu57 
8BYYbjjlUCbggi%@B CF 
z	"
R/ 
#	"	"s   ,"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  rp  r  Fr   )r.   r/   r   rE   r:   r   rb  r    rG   rH   rJ   )df1r   schema1schema2rE  rF  s         r7   6test_table_from_pandas_keeps_column_order_of_dataframerw  7  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 )Nrp  rq  r  r   r   r   r  rr  r   r   rs  Fr  )r.   r/   r   rE   r:   r    rb  r   rp  rG   rH   rJ   )rT   r:   rt  r   rE  rF  s         r7   3test_table_from_pandas_keeps_column_order_of_schemary  Q  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 )Nrp  rq  r  r   r   r   r  rr  )r  r  rp  F)rK   r;   )r.   r/   r   rE   r:   rb  r   r    rG   rH   rJ   )rT   columns1ru  columns2rv  rE  rF  s          r7   ;test_table_from_pandas_columns_argument_only_does_filteringr}  i  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)
Nrp  rq  r  r   r   r   r  rr  )r:   rK   )r.   r/   r   rE   r:   r   rb  r    r   r(  r)  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	"
R@ 
#	"	"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  Tra  )	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   rs  r#  r   r   r   zname 'index' present in ther  ra  T)r:   r;   rV   z'preserve_index=False' wasFr  z=name 'index' is present in the schema, but it is a RangeIndexr   r`   rv  )r:   r;   rV   rU   ))r   r   )r   r)   )r   r   level1level2r   )r.   r/   rE   r:   r   r    r   r(  KeyErrorrG   rH   r   ra   r\   r)  r   rr   ry  r   from_tuplesr  )rT   r:   rU   s      r7   +test_table_from_pandas_schema_index_columnsr    s]   	IO<	=BYY	bhhj	bjjl	"((* F 
x'D	E
R/ 
F BHHM Bvd,24 
z)E	F
RuE 
G
 
z *J 
K
RtD
K 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 
F	E 
G	F

K 
K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   rs  r#  r   r   r   Tr   )r;   r:   r   r   ra  )r.   r/   rE   r:   r   r    SchemarH   rG   r\  rJ   )rT   rV   r:   rY   s       r7   :test_table_from_pandas_schema_index_columns__unnamed_indexr    s   	IO<	=Bii	bhhj	bjjl	bhhj)! O YY""2d";FHH  D HE<<'')00AAA 
IO<I	NBYY""2&FHH  F 3E<<'')00AA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Truera  s   metas   True)
r.   r/   rE   r  rH   r  rG   r:   r  getr  s      r7   2test_table_from_pandas_schema_with_custom_metadatar    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:00Zr!  r)   )r   r   )r   r  r  Tr  r   re   r  r  Fra  rK   r   ra   r  r   r   r   r?  zdatetime64[s, UTC])r.   r/   r   r0   r2   r3   rE   r:   r   r   r  rG   rH   rJ   r   rI   r   rB  r$  rR   rS   )rT   r:   rY   metadata_floatmetadata_datetimerZ   coerce_cols_to_typesrU   s           r7   2test_table_from_pandas_schema_field_order_metadatar    s    
MM"8sAN# 
B
 YY
"**,6
R\\#%85I F
 HH  F 3E<<v&&&\\11)<Q?N&!W,,,*%---44Y?BV$
222Z(Z,????__F#Y/r~~''"22+?Z(7J'(//0DEH&(+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   rI  NrX  r1  )FTFTF)r  r  c3c4c5)r.   r/   r0   rb   r2   r3   rE   rF   rH   rI   rR   rS   )r   r4  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   rI  N)r  r  r  r  r   r   r   r   TrX  r1  rv  )r.   r/   r0   rb   rE   rF   rH   rG   r0  rI   r  ry  rR   rS   )r  r  batch1batch2rY   rZ   r   s          r7   test_recordbatchlist_to_pandasr  M  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  e  s|    	"((<01$	@B
"((<()$8Aa5??!!T)))Q4>>  D(((rj   r_   rU   r#  r!   r   r   r   r   r   r   r   r   r  r   r    r   rR  r   )lengthr  zlist[list[int16]]r  r   r   rI  r   rJ  r  r  re   r   c                 $    t        |       |k(  sJ y r  )r
   r  s     r7   test_logical_typer  p  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  rq  rr  rs  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_unchangedrs  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                         |k(  sJ y )Nr  )rE   rs  rI   )r  kwargsr  r6   s       r7   r  r    s>    //1A ##%)9999rj   c                  8   t        j                  t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g dd      gt        d      D  cg c]  } d	j	                  |        c}       }t        |d       t        |d
       y c c} w )Nr  r  r`  r  r  r  r  r   f{}Tr  )rE   rY   rb   r4   format_check_blocks_createdr  )r  r   s     r7   test_to_pandas_split_blocksr    s    

t,
t,
t,
t,
t,
t,
t,
t,	 "'q*AQ*		,A !Q%ad; +s   D
c                 |    t        t        j                        t        d      k  r| j                  S | j                  S )Nz1.1.0)r   r.   rB  _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    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j                  |        c}       S c c} w c c} w )Nr  r)   r  )rE   rY   r4   rb   r0   r2   r3   r  )r  r  s    r7   _make_tablez1test_to_pandas_self_destruct.<locals>._make_table  s    xx 1X
  HHRYY__U+CaC01
 &+1X.XELLOX.	0 	0 
 /s   ?B,B
T)r  self_destruct)r  )r  )r  r   r  s     @r7   test_to_pandas_self_destructr    s5    
A0 	A%ad$O 	A%at<rj   c                     d} t        j                  t        j                  | t        j                              }t        j
                  |||gg d      }t        j                         }|j                         }t        j                         |d| z  dz  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   rs  rI   rq  rr  )r  rh   r   r  r6   s        r7   test_table_uses_memory_poolr    s    A
((299Qbhh/
0C
#sC"45A//1	A##%*:QUQY*FGGG 	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    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 )	Nrm  g333333@g      "@g      E@r   r`  r   r   )	rE   r   rb   rb  r0   r.   rc   r_   rJ   )r   r   rK  r  rp  rq  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  rJ  r  r`  r   i r   rI  {   re   Fr-  r   r  r  )r   r   r   r9  )r   nowr.   rc   r  r  
tz_convertrE   r  r  rH   r_   r  to_pydatetimerb   r[  r   r(  r)  rJ   r
  )
rI  re   s_nyc
us_with_tzrh   r  rU   targetrZ   r  s
             r7   test_cast_timestamp_unitr  5  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	"
bll401 
# 
z	"
V",,t*<= 
# XX!!&r||D/A!NF=="""XXf2<<#5EBF==""") 
#	" 
#	" 
#	"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 )NrJ  r  r  r`  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  f  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   rI  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   r`  r  r  r  r  r   r^  r   )r.   r
  r  r  rE   rb   r  r  r   rI   r   r   r_  
astimezoner   ra  rL   rY   )
r  r  rH  r  rh   r  arr3arr4rZ   utc_dts
             r7   test_nested_with_timestamp_tzr  q  s   				BE "; =%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 "rj   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)   rW  r   )FFTFFF)r   r   r   r   r   r   r   r   r  r   urt  r   r,  )r0   r?  rb   r?   r$  rE   r/  r   r   r(  r  rI   r.   rn  
from_codesrR   rd   rc   ro   rq   where)src_indicesr  rl   
index_typer2  d1d2pandas1
ex_pandas1pandas2signed_indices
ex_pandas2s               r7   test_dictionary_with_pandasr    s   ))Iq)K/v>J88=>D*
$$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* *)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)r6  	item_sizepct_nullr  rZ   r  s         r7   random_stringsr    s    BII--aZq-IJE!HEHq<	2HE &( !|/3ryy~~a 8+,M Fs   Bc                     t         j                  j                  d       t        j                  t        dd      d      } t        j                  t        dd      d      }t        j                  t        dd      d      }t        j                  j                  t         j                  j                  d	t        |       d
d      |       }t        j                  j                  t         j                  j                  d	t        |      d
d      |      }t        j                  j                  t         j                  j                  d	t        |      d
d      |      }t        j                  t         j                  j                  d	t        |      d
d      t         j                  j                  d
      dk        }t        j                  j                  ||      }t        j                  | ||g      }t        j                  ||||g      }	t        j                  |j                  d      |j                  d      |j                  d      |j                  d      g      }
|	j                         }|
j                         }|j                  j                   |j                         k(  j#                         sJ |j%                  d      }d ||j'                         <   t)        j*                  ||       y )Ni90  r      r  r`  r  r  r  r   r  r  r  rt  r  r+   )r0   r2   r  rE   rb   r  r/  r   r  r   r  concat_arraysr  r[  rI   r  ru  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    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   rQ  )r   r   r   r   r   )rE   rb   r  r  r   rI   r.   rc   r0   r?   rR   rd   )r2  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
                               }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.   rn  rE   r  r   r  rb   r  r_   rJ   r0   )r  r  rZ   s      r7   test_dictionary_from_pandasr	    s   
..
)CMM"'')RYY[9M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_typer`  T)r  r  r  z4The 'ordered' flag of the passed categorical values r  Fr  )r.   rn  r  r0   rb   r?   rE   r  r   r  r_   rJ   r  r   r   r   r(  rO  r)  )r  typrZ   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   rI  r   zstring[pyarrow]r   r  )r   r.   rB  r   rC  r/   r$  rE   rb   r  codesru  rs   r   r  rH   r/  r   )rT   r2  r  rU   rZ   s        r7   :test_convert_categories_to_array_with_string_pyarrow_dtyper  Y  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   ra  r`  )r.   r/   rc   rE   rY   rb   r   r  rJ   r:   r    rs   )rT   rZ   rU   r:   rq  s        r7   test_array_protocolr  m  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 r  )rE   r   )clsstorage_type
serializeds      r7   __arrow_ext_deserialize__z,DummyExtensionType.__arrow_ext_deserialize__  s+    S   rxxz)))urj   )r  r  r  r  r  classmethodr%  __classcell__r  s   @r7   r  r    s"    I  rj   r  c                     t        j                  g dt        j                               }t         j                  j	                  t               |      S )Nr   r`  )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   r`  __arrow_array__F)raising
2012-01-01r   Dr>  r   r   r   r   )rE   rb   r   r*  r+  r  setattrr.   r  PeriodArrayr-  IntervalArrayrA  rB  rJ   rc   r   rY   r/   r  r  )monkeypatchr,  rU   rh   rZ   s        r7   *test_array_protocol_pandas_extension_typesr7    sp    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   r,  r   r   F)rr   )r   rE   r  r  buffersr0   
frombufferoffsetr   BooleanArrayfrom_buffersr  r  r  r!   r.   r  IntegerArrayrr   )r   rb   rh   buflistr   bitmaskrl   int_arrs           r7   _Int64Dtype__from_arrow__rB    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   r_  r  r   )r   r   r   rp  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   rB  delattrcorer  integer_IntegerDtypeNumericDtyper   )r6  rT   rY   rZ   r   rF  s         r7   test_convert_to_extension_arrayrL    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__  s    H	Jrj   c                      yr  r  r  s    r7   r  z+MyCustomIntegerType.__arrow_ext_serialize__  r   rj   c                 *    t        j                         S r  )r.   rF  r  s    r7   r  z#MyCustomIntegerType.to_pandas_dtype  s    }}rj   )r  r  r  r  r  r  r'  r(  s   @r7   rN  rN    s    Jrj   rN  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   rD  rE  r   )rE   rb   r   r*  r+  rN  rY   rI   r  r  rs   r   r.   rF  rc   rR   rd   r/   rS   r   rB  rG  rH  r  rI  rJ  rK  r0   r   r(  r)  )r6  r,  rh   rY   rZ   rU   s         r7   /test_conversion_extensiontype_to_extensionarrayrS    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   r2  )rE   rY   rb   r   rI   r   r0   r.   rF  r  r   r   r/   PeriodDtype)rY   rZ   s     r7   'test_to_pandas_extension_dtypes_mappingrX  %  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                  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 missingr1  r   r2  r>  r   r   r[   r`   )r   r.   rB  r   rC  rA  rb   rB  rE   rI   rc   rR   rd   rY   )rh   rZ   rU   s      r7   test_array_to_pandasrZ  >  s    r~~/=>acBHH!!!Q'--/#((*99S>
vx05#,'.88:99Su-
vx0/rj   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/   rB  rE   rY   r   rB  rR   assert_index_equalrI   r   r   )rT   rY   s     r7   5test_roundtrip_empty_table_with_extension_dtype_indexr^  M  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   rp  r   rU  )r   r.   rB  r   rC  r/   
ArrowDtyperE   r   r   rr   rY   rI   rR   rS   )r   rT   rU   rY   rZ   s        r7   !test_to_pandas_types_mapper_indexra  Z  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   rU  r   )r   r.   rB  r   rC  rE   rb   r   rF  r  rI   r   r0   r    Float64Dtyper   rV  rZ   s      r7   !test_array_to_pandas_types_mapperrf  l  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 rc  )r   r.   rB  r   rC  rE   r  rb   r   r   r>  rF  r  rI   r   r0   r    rd  re  s      r7   )test_chunked_array_to_pandas_types_mapperrh    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   rI  NrX  )r   r   r   r   r  r`  r\  r   r   __index_level_1__r   r   r   r)   r1  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   r`  r  r#  r   r   r)   r1  r   r   rk  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   rl  rm  rn  rI   rR   rS   )ro  rp  rq  rr  rU   rY   rZ   s          r7   'test_metadata_compat_missing_field_namer  I  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:00rI  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?   r2  zM8[ns])r.   r/   r0   r>  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   z)ignore:Parquet format '2.0':FutureWarningc                 
   t               }t        j                  j                  |      }| dz  }t	        j
                  ||d       t	        j                  |      }|j                  d      }t        j                  ||       y )Nztimestamps_from_pandas.parquetz2.0)versionT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    sl    
 
!	"BHH  $E99HNN5(E2]]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  r`  r   Tr  r   )rE   rb   r  rY   rI   r   r?   r   r   r_  fromutc)r  r   r  rh   rY   rZ   rU   s          r7   'test_timestamp_as_object_non_nanosecondr    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 )Nr[  r   x   i  r   r  r  9   timestamp_colTr  )	r   r`  r   rb  localizerE   rY   rb   rI   )r[  r   r   r  rY   rZ   s         r7   %test_timestamp_as_object_fixed_offsetr    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    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   )rJ  r  r   (   r\  )rj  rK  rJ  )r  timedelta_2r  )r   r   rE   rY   rI   to_pytimedelta)r   r  r  rY   rT   s        r7   %test_does_not_mutate_timedelta_nestedr    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   defra  r   r  strictmaps_as_pydicts)rE   r:   r   rb  r  r   r  r6  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    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   rI  )rX  r1  r  r  r   r   r   r  Nr  r  r  r   r)   )r   r   r   r   r  r  r  r   rI  r   r@   rA   r  returnc                     t        j                  t         j                  j                  |             }|j	                  d       |j                  |      sJ y )Nr`  TrE  )rE   r  r  rH   rH  rJ   )r  r   array_roundtripr   s      r7   assert_roundtripzMtest_roundtrip_nested_map_array_with_pydicts_sliced.<locals>.assert_roundtripo  sJ    **288+?+?R+?+PQ  d +{{?+++rj   )rE   rb   r  rb  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  r   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 &"
 
	 	 	"*I 2	4
~/FG
~/FG
46TU
46TU 
# 
"''"))+rxx		'<=	>B, ,T ,
 ^]3^]3*F3*F3% 
#	"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   r:  r   r   r  r  lossyr  r`  r   rI  r   )rE   rb   rb  r  r  r   r  r   r(  r  ArrowExceptionrI   r.   rc   rJ   r  rH   r   r  r  r0   array_equal)r  r  rR  mapsr   r  r  r  r  row1row2tup1tup2s                r7   4test_roundtrip_map_array_with_pydicts_duplicate_keysr  z  s   88)*DHH
sc3Z#s,
E !fG;;""7D%8D	bhhryy{3	4B 
rvv,,	-x0 
. ^^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
d4yCI%%%djjlDJJL9JD$7d1g%%%>>$q'47333 : C ~#&=">>>>.*AB
d4yCI%%%dD/JD$7d1g%%%>>$q'47333 * CC 
.	-s   ;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  r!  )r   rI  rX  r1  r  r  )r   r)   r   r  r  r   rI  rX  r1  r  r  r   r   )rE   rb   rb  r  r  r   r   r(  r  rI   r.   rc   r   r  r0   r  )
r  r  rR  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	!w/ 
"
 ^^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%%% * ; 
"	!s    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)   rq  rr  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    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)   rq  rr  )r.   rc   r   rE   rb   rI   rR   rd   )r  rh   rZ   s      r7   "test_array_conversion_for_datetimer    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 )Nra  TrE  r   r   r  )r  r  )	rE   rG   rH   rH  r  r?  rR   rS   rI   )rT   r:   tabr?  s       r7   	roundtripz-test_nested_chunking_valid.<locals>.roundtrip  sr    hh""2f"5$ ZZ]--
A~~
cmm$<D , FGI	Krj      0i T*r-  struct_fieldr  r  lossolr   r  ra  r  )	r.   r/   rE   r  r  rb  r  r6  r:   )	r  r6   r  r  r  r  
map_of_losmap_typer:   s	            r7   test_nested_chunking_validr    s?   K 	yAbllI1ay123a FbllI'?@ABCEbllGeUE%:;<=(CbllECc?3455
!CbllECc?345sJwwryy{xx		NBIIK+H*I JKMHYY*+,FbllFZZ$HIJ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)rq  r   rm  multiprocessingr  r  rN   collectionsr   r   r   r   r   r   
hypothesisr!  hypothesis.strategies
strategiesr#  r   numpyr0   numpy.testingr6  rx   r	   r*  r4  numpy.exceptionsImportErrorpyarrow.pandas_compatr
   r   pyarrow.tests.utilr   r   r   pyarrow.tests.strategiestestsr%  utilr  pyarrow.vendored.versionr   pyarrowrE   r   r  pandasr.   pandas.testingrR   pandas_examplesr   r   r  
pytestmarkr8   r\   ri   ru   r{   r}   r  r   r8  r:  r<  r*  r  r  rz  r  r  r  r  r:  rC  rG  rL  r  rT  r"  r  pandas_compatible_typesrV  rZ  r\  r`  rb  rd  rk  rn  rw  ry  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  r6  r  rb  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-  r7  rB  rL  rN  rS  rX  rZ  r^  ra  rf  rh  r  r  r  r  r  rP   r  r  r  r  r6  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-H4 H4Vb bJ	 IK.K.& IK,K,,}	$ }	$Hc- c-LX$ X$v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
--*2,j($:))  I'4, HF
"** 
!H921
8 3c
"34, 5,"-. - -8f"R0,f756 GH	# I 	## '89&89:q! 4htQ6JKL% M ; :%*	% / /	0
C*4ZK4\14h&B+	+ # #L . .]_  
	
 	

  	B  		  		sS   
X$ X X2 	X> X!X$  X!!X$ $X/.X/2X;:X;>YY