
    gj                        d dl Z d dlZd dlmZ d dlZ	 d dlZd dlZd dl	Z
d dlmZmZ d dlmZ d dlmZ 	 d dlmZ d dlmZ 	 d dlZd dlmZ d dlmZ ej8                  j&                  Zej8                  j,                  d        Zd	 Zej8                  j,                  ej8                  jA                  d
g d e
jB                         ddddddfg d e
jD                         ddddddfg d e
jF                         ddddddfg d e
jH                         ddddddfg d e
jJ                         ddddddfg d e
jL                         ddddddfg d e
jN                         ddddddfg d e
jP                         ddddddfg d e
jR                         ddddddfg d e
jT                         ddddddfdd e+d      ddg e
jX                         dd e+d      j[                  d      dddfg d e
j\                         dd d!d d"dfg d# e
jX                         dd$d%dddfg      d&               Z/d' Z0ej8                  j,                  d(        Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8ej8                  j,                  d0        Z9d1 Z:ej8                  jw                  d2      d3        Z<d4 Z=ej8                  j,                  d5        Z>ej8                  j,                  d6        Z?d7 Z@ej8                  j                  ej8                  j                  d8               ZCd9 ZDd: ZEej8                  jA                  d;d< eFd=      id< eFd=      idfd< eFd=      id> eFd=      id?f eFd=       eFd=      d@dA eFd=      idBff      dC        ZGej8                  j                  dD        ZIdE ZJy# e$ r dZY w xY w# e$ r dZY {w xY w# e$ r dxZZY zw xY w)F    N)OrderedDict)_check_roundtripmake_sample_file)LocalFileSystem)util)_write_table)alltypes_samplec                     t        d      } | j                  t        | j                              } t        j
                  j                  ddt        |             | _        t        |       }t        | j                        }|j                  }t        |       |j                  t        |       k(  sJ |j                  |dz   k(  sJ |j                  dk(  sJ |j                  dk(  sJ d|j                   v sJ t#        |j$                  t&              sJ t#        |j                  t(              sJ |j*                  }|j*                  |u sJ t        |      |dz   k(  sJ t        |       |d   }t        |       |j,                  | j                  d   k(  sJ |j.                  dk(  sJ |j0                  dk(  sJ |j0                  dk(  sJ |j2                  d	k(  sJ |j4                  d
k(  sJ |d   }|j6                  j8                  dk(  sJ t;        j<                  t>              5  ||dz       d d d        t;        j<                  t>              5  |d    d d d        tA        |j                        D ]  }|jC                  |      }t#        |tD        jF                        sJ t        |       tA        |j                        D ]:  }|jI                  |      }	t#        |	tD        jJ                        sJ t        |	       <  t;        j<                  t>              5  |jC                  d       d d d        t;        j<                  t>              5  |jC                  |j                  dz          d d d        |jC                  d      }|j                  t        |       k(  sJ |j                  |dz   k(  sJ |jL                  dkD  sJ t;        j<                  t>              5  |jI                  d      }	d d d        t;        j<                  t>              5  |jI                  |dz         }	d d d        |jI                  d      }	|	jN                  dk(  sJ |	jP                  dk(  sJ |	j2                  d	k(  sJ |	jR                  dk(  sJ |	jT                  dk(  sJ |	jV                  du sJ t#        |	jX                  tD        jZ                        sJ |	j\                  dk(  sJ t_        |	j`                        ddhk(  sJ |	jb                  du sJ |	jd                  J |	jf                  dkD  sJ |	jh                  dkD  sJ |	jj                  dkD  sJ t;        j<                  tl              5  |	jn                   d d d        t;        j<                  tl              5  |	jp                   d d d        y # 1 sw Y   xxY w# 1 sw Y   ^xY w# 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N'  sizecolumnsr   i@B    2.6zparquet-cppBOOLEANNONE   FLOAT16    boolTSNAPPYPLAINRLEF)9r	   reindexsortedr   nprandomrandintlenindexr   metadatareprnum_rowsnum_columnsnum_row_groupsformat_version
created_by
isinstanceserialized_sizeintdictschemanamemax_definition_levelmax_repetition_levelphysical_typeconverted_typelogical_typetypepytestraises
IndexErrorrange	row_grouppqRowGroupMetaDatacolumnColumnChunkMetaDatatotal_byte_sizefile_offset	file_path
num_valuespath_in_schemais_stats_set
statistics
Statisticscompressionset	encodingshas_dictionary_pagedictionary_page_offsetdata_page_offsettotal_compressed_sizetotal_uncompressed_sizeNotImplementedErrorhas_index_pageindex_page_offset)
dffilehncolsmetar/   colcol_float16rgrg_metacol_metas
             X/var/www/openai/venv/lib/python3.12/site-packages/pyarrow/tests/parquet/test_metadata.pytest_parquet_metadata_apir]   7   s<   	e	$B	F2::.	/Byy  G#b' :BHR E

OE >>DJ==CG###uqy(((!###%'''DOO+++d**C000dmmT*** \\F;;&   v;%!)###L
)CI88rzz!}$$$##q(((##q(((##q(((	)))''')K##((I555	z	"uqy 
# 
z	"r
 
# D''(..$'2#6#6777W,,-C~~c*Hh(>(>???N . ) 
z	"r 
# 
z	"t**Q./ 
# nnQGs2w&&&%!)+++""Q&&&	z	">>"% 
# 
z	">>%!), 
# ~~a H1$$$###!!Y...%'''""f,,,  D(((h))2==9998+++x!!"w&6666''5000**222$$q((())A---++a///	*	+ 
,	*	+"" 
,	+g 
#	" 
#	" 
#	" 
#	" 
#	" 
#	"$ 
,	+	+	+s`   '	V&V3W WWW'"W4X &V03V= W
WW$'W14W= X	c                     t        j                  dg di      }t        j                  || dz         t        j                  | dz        }|j
                  j                  d      j                  d      j                   y )Nar   r      ztest_metadata_segfault.parquetr   )	patabler<   write_tableParquetFiler$   r;   r>   rF   )tempdirrc   parquet_files      r\   test_parquet_metadata_lifetimerh      sb    HHc9%&ENN5'$DDE>>',L"LML##A&--a0;;    )datar6   r3   	min_value	max_value
null_countrC   distinct_count)r   r   r   N   INT32r   ro   INT64)r   r   r   Nro   r   )皙g@gffffff@N皙@FLOATrr   rs   DOUBLEr   b  aaa
BYTE_ARRAYri   zutf-8)TFFTTr   FTr   )       bs   12Ns   aaarz   r{   c                 \   t        j                  d| i      }t        j                  t        j                  d|      g      }	t        j
                  j                  ||	d      }
t        |
      }|j                  }|j                  d      }|j                  d      }|j                  }|j                  sJ t        ||j                  |      sJ t        ||j                  |      sJ |j                   |k(  sJ |j"                  |k(  sJ |j$                  |k(  sJ |j&                  |k(  sJ y )Nrj   F)r/   safer   )pd	DataFramerb   r/   fieldTablefrom_pandasr   r$   r;   r>   rF   has_min_max_closeminmaxrm   rC   rn   r3   )rj   r6   r3   rk   rl   rm   rC   rn   rS   r/   rc   rT   rV   rZ   r[   stats                   r\   "test_parquet_column_statistics_apir      s   \ 
vtn	%BYY./0FHH  F ?EU#E>>DnnQG~~a HD$),,,$),,,??j(((??j((( .000...ri   c                     | t        j                         k(  rt        ||z
        dk  S | t        j                         k(  rt        ||z
        dk  S ||k(  S )NgHz>gvIh%<=)rb   float32absfloat64)r6   leftrights      r\   r   r      sP    rzz|4%< 4''		4%< 5((u}ri   c                     t        j                  dt        j                  t         j                  gd      i      } t	        t
        j                  j                  |             j                  }|j                  d      j                  d      j                  j                  rJ |j                  d      j                  d      j                  j                  J y )Ntzdatetime64[ns])dtyper   )r~   r   SeriesNaTr   rb   r   r   r$   r;   r>   rF   r   r   )rS   rV   s     r\   &test_parquet_raise_on_unset_statisticsr      s    	sBIIrvvh6FGH	IBBHH0045>>D~~a ''*55AAAA>>!##A&1155===ri   c                    ddt        j                         fddt        j                         fddt        j                         ft	        j
                  dddd      t	        j
                  d	ddd      t        j                  d
      ft	        j
                  dddd      t	        j
                  d	ddd      t        j                  d      ft	        j                  ddddddd      t	        j                  ddddddd      t        j                  d
      ft	        j                  ddddddd      t	        j                  ddddddd      t        j                  d      ft	        j                  ddd      t	        j                  ddd      t        j                         ft        j                  d      t        j                  d      t        j                  dd      fg	}t        |      D ]  \  }\  }}}t         j                  j!                  t        j"                  ||g|      gdg      }t%        | dj'                  |      z        }t)        j*                  ||d       t)        j,                  |      }|j.                  j1                  d      j3                  d      j4                  }	|	j6                  |k(  sJ |	j8                  |k(  rJ  y )N
   l   5f|~W	 l    u   ähnlichu   öffentlich   r   rw      msusi           z20.123z20.124   r   r6   rW   zexample{}.parquetr   version)rb   uint64uint32utf8datetimetimetime32time64	timestampdatedate32decimalDecimal
decimal128	enumerater   from_arraysarraystrformatr<   rd   re   r$   r;   r>   rF   r   r   )
rf   casesimin_valmax_valtypr   pathpfstatss
             r\   %test_statistics_convert_logical_typesr      sX    &		4*biik*-3mmBAt,hmmBAt.LiiommBAt,hmmBAt.LiioaQ1d;aQ1d;ll4 " aQ1d;aQ1d;ll4 " mmD!R(mmD!R(iik ooh'ooh'mmB"$!%E( '0&6""GWcHH  "((GW+=C"H!I"'*7188;<=
q$.^^D!%%a(//2==yyG###yyG### '7ri   c           
         t         j                  j                  t        dt        j                  g d      fdt        j                  g d      fg            }t        || dz         t        j                  | dz        }dD ]@  }|j                  d      j                  |      }|j                  du sJ |j                  @J  t        || d	z  d
       t        j                  | d	z        }dD ]@  }|j                  d      j                  |      }|j                  d
u sJ |j                  @J  t        || dz  dg       t        j                  | dz        }|j                  d      j                  d      }|j                  d      j                  d      }|j                  du sJ |j                  d
u sJ |j                  J |j                  J y )Nr_   r`   rv   r_   rv   cdata.parquet)r   r   r   Tzdata2.parquetF)write_statisticszdata3.parquetr   )rb   r   from_pydictr   r   r   r<   read_metadatar;   r>   rE   rF   )rf   rc   rV   rW   cccc_acc_bs          r\   %test_parquet_write_disable_statisticsr     s   HH  "((9%&"((?+,
 	E .01Gn45D^^A%%c*$&&&}}((( 
 /1EJGo56D^^A%%c*%'''}}$$$ 
 /1SEJGo56D>>!##A&D>>!##A&D$$$%%%??&&&??"""ri   c                  0   t        j                  d      } | j                         ddddk(  sJ t        j                  ddd      } | j                         ddddk(  sJ t        j                  dt        j
                         fdt        j
                         fg      }t        j                  d	d
      t        j                  dd
      f}t         j                  j                  ||      \  }}|dk(  sJ |dk(  sJ t         j                  j                  |||      }||k(  sJ t         j                  j                  |dd      }t        j                  ddd      t        j                  d	dd      f}||k(  sJ t         j                  j                  |d      }|dk(  sJ t         j                  j                  |d      dk(  sJ t        j                  t              5  t         j                  j                  |d       d d d        t        j                  t        d      5  t        j                  d	d      t        j                  dd      f}t         j                  j                  ||       d d d        y # 1 sw Y   |xY w# 1 sw Y   y xY w)Nr   Fcolumn_index
descendingnulls_firstr   T)r   r   r_   rv   r   r   )rv   r   )r_   	ascendingat_end)r_   r   at_start)null_placement )r   r   )r_   znot a valid sort orderzinconsistent null placementmatch)r   )r<   SortingColumnto_dictrb   r/   int64to_orderingfrom_orderingr7   r8   
ValueError)sorting_colr/   sorting_cols
sort_orderr   sorting_cols_roundtrippedexpectedempty_sorting_colss           r\   test_parquet_sorting_columnr   5  ss   ""2&K %    ""14HK %    YYbhhj)C+<=>F
t,
u-L "$!1!1!=!=fl!SJBBBBX%%% " 0 0 > >
N!,$444##11*: 2 GL 	u$?
t>H 8### ))77C###''3~EEE	z	"
&&v0OQ 
# 
z)F	GQD1QE2
 	$$V\: 
H	G 
#	" 
H	Gs   $!J (AJ J	Jc                     t        j                  t        j                  dt        j                         fdt        j                         fg      t        j                         d      } t	        j
                  dd      t	        j
                  dd      g}t        j
                  j                  | |      \  }}|d	k(  sJ t        |      dk(  sJ |d   d
k(  sJ |d   dk(  sJ y )Nxyr_   rv   r   Tr   r   Fr   )za.xr   r   )rv   r   )rb   r/   structr   r<   r   r   r"   )r/   sorting_columnsr   r   s       r\   "test_parquet_sorting_column_nestedr   j  s    YYYYbhhj)C+<=>XXZ F 	t,
u-O
 "$!1!1!=!=fo!VJX%%%z?aa=1111a=....ri   c                  2   t        j                  g dg dd      } t        j                  ddd      t        j                  dd	      f}t        j                         }t        | ||
       t        j                  |j                               }t        j                  |      }||j                  d      j                  k(  sJ |j                         }|j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ y )Nr`   r   r   r   Tr   r   F)r   r   )r   r'   r   r&   ra   r(   )rb   rc   r<   r   BufferOutputStreamr   BufferReadergetvaluer   r;   r   r   get)rc   r   writerreaderr$   metadata_dicts         r\   !test_parquet_file_sorting_columnsr   |  s    HH9?;<E 	aDdK
aE:O ""$F@__V__./F 'Hh003CCCCC$$&M]+q000Z(A----.!333ri   c                     d} t        j                  dt        j                         | di      }t        j                  dt        j                  |g      | di      }t        j                  dt        j                         dd	| d
i      t        j                  dt        j                  t        j                  dt        j                         | di            | di      t        j                  dt        j                  |g      | di      t        j                  dt        j                               t        j                  dt        j                         | di      t        j                  dt        j                         | di      g}|D cg c]  }g  }}t        j
                  |t        j                  |            }t        j                         }t        j                  ||       |j                         }t        j                  t        j                  |            }	|	j                  }
|
d   j                  |    d
k(  sJ |
d   j                  d   d	k(  sJ |
d   }|j                  |    dk(  sJ |j                  j                   }|j                  |    dk(  sJ |
d   }|j                  |    dk(  sJ |j                  d   }|j                  |    dk(  sJ |j                  d   }|j                  |    dk(  sJ |
d   j                  J |
d   j                  |    dk(  sJ |
d   j                  |    dk(  sJ y c c}w )Ns   PARQUET:field_idinners   100r$   middles   101basics   others   abc   1listz
list-inners   10s   11r   s   102zno-metadataznon-integral-field-ids   xyzznegative-field-ids   -1000r/   r   r   r   ra   ro   r   )rb   r   int32r   list_rc   r/   r   r<   rd   r   re   r   schema_arrowr$   r6   value_field)field_idr   r   fields_arrsrc   biocontentsr   r/   
list_fieldlist_item_fieldstruct_fieldstruct_middle_fieldstruct_inner_fields                   r\   test_field_id_metadatar
    s   "HHHWbhhjHf3EFEXXh			!$f-/F 	"((*68T03 	4
HHRXXlBHHJ(0%'8: ;&		(
 	299fX.(F9KL

+
("((*#V,	.
$bhhj#X.	0F 1BDHHT"))F"34E



!CNN5#||~H	1	2B__F!9h'4///!9h'6111Jx(E111 oo11O##H-666!9L  *f444&++A.''1V;;;,11!4&&x0F:::!9%%% !9h'6111!9h'8333A  s   	Mc                  x   dD ]  } t        j                  dg di      }t        j                         }t        |||        t        j                  |j                               }t        j                  |      }|j                  d      j                  d      }|j                  | u sJ |j                  | u rJ  y )N)FTr_   r`   )write_page_indexr   )rb   rc   r   r   r   r   r<   r   r;   r>   has_offset_indexhas_column_index)r  rc   r   r   r$   r   s         r\   test_parquet_file_page_indexr    s    )#y)*&&(UF5EF!23 ##F+"))!,""&6666""&6666 *ri   c                    ddg}t        | dz        }t        j                  g dg dddgddgdd	ggd
      }t        j                  j                  |      }d }|D ]X  }g }t        j                  |t        | |z        |       |d   j                  |       ||d   }E|j                  |d          Z t        |d      5 }|j                  |       d d d        t        j                  |      }|j                         }	|j                         }
|
D ]  }|dk7  s	|
|   |	|   k(  rJ  |
d   dk(  sJ |
d   dk(  sJ |
d   dk(  sJ |
d   dk(  sJ |	d   dkD  sJ y # 1 sw Y   xY w)NzARROW-1983-dataset.0zARROW-1983-dataset.1	_metadatar`   )r   r   r   ra   ro   )onetwothreemetadata_collectorr   wbr,   r'   r&   r   r(   )r   r~   r   rb   r   r   r<   rd   set_file_pathappend_row_groupsopenwrite_metadata_filer   r   )rf   	filenamesmetapathrS   rc   _metafilenamerV   fmd_mdkeys               r\   test_multi_dataset_metadatar&    s   ')?@I7[()H 
a&1a&1a&) 
B
 HH  $E E
uc'H"45*.	0Qh'=GE##DG,  
h	!!!$ 
 H%D	B
--/C##s8r#w&&&  }"""z?a A%%% !Q&&& 1$$$ 
	s   EE(c                 z   t        | dz        }t        j                  ddg      }t        j                  ||       t        j
                  |      }t        | dz        }t        j                  ddg      }t        j                  ||       t        j
                  |      }t        | dz        }t        j                  ddg      }t        j                  ||       t        j
                  |      }	t        |      t        |      k(  sJ t        |      t        |      k(  sJ t        |      t        |	      k7  sJ y )N	metadata1r_   r   rv   r   	metadata2	metadata3)rv   r   )r   rb   r/   r<   write_metadatar   hash)
rf   path1schema1parquet_meta1path2schema2parquet_meta2path3schema3parquet_meta3s
             r\   test_metadata_hashingr8    s   +%&Eii)9:;Ggu%$$U+M +%&Eii)9:;Ggu%$$U+M +%&Eii)9:;Ggu%$$U+M $}"5555$}"5555 $}"5555ri   z#ignore:Parquet format:FutureWarningc                    t        | dz        }t        j                  ddg      }t        j                  ||       t        j
                  |      }|j                  j                         }|j                  |      sJ |j                  rd|j                  vsJ dD ]I  }t        j                  |||       t        j
                  |      }|dk(  rdnd}|j                  |k(  rIJ  t        j                  d	d
gddgd|      }t        j                  || dz         t        j
                  t        | dz              }t        j                  ||||g       t        j
                  |      }|j                  d
k(  sJ d}	t        j                  t        |	      5  t        j                  t        j                  ddg      |||g       d d d        y # 1 sw Y   y xY w)Nr$   r)  r*  s   ARROW:schema)1.0z2.0z2.4r   r   r:  r   r   r   g?g?r   r   r   r  zLAppendRowGroups requires equal schemas.
The two columns with index 0 differ.r   )r_   r   )rv   null)r   rb   r/   r<   r-  r   to_arrow_schemaequalsr$   r)   rc   rd   r(   r7   r8   RuntimeError)
rf   r   r/   parquet_metaschema_as_arrowr   expected_versionrc   parquet_meta_multmsgs
             r\   test_write_metadatarD    s   w#$DYY(89:F fd###D)L"))99;O!!&))) o&>&>>>> 0
&$8''- %,u$45%**.>>>> 0 HHAq6R1&AENN5'N23##C.(@$ABL,)E ((.++q0002C	|3	/
II~}56lL%A	
 
0	/	/s   0GGc                      t        j                  t        j                  dd      gdddz  i      } t        j                  t	        d      g|       }t        |       y )	Nf0doublelarger   i r   r   r   )rb   r/   r   rc   r:   r   )	my_schemarc   s     r\   test_table_large_metadatarJ  I  sL    		288D(34$+S8^#<>I HHeBi[3EUri   c                  0   t        d      } t        |       }t        |       }t        | | j                  d d d            }t        |j                  t
        j                        sJ |j                  j                  |j                        sJ |j                  |j                  k(  sJ |j                  j                  |j                        sJ |j                  |j                  k(  sJ |j                  dk7  sJ |j                  j                  |j                        rJ |j                  |j                  k7  sJ t        |j                  d   t
        j                        sJ |j                  d   j                  |j                  d         sJ |j                  d   |j                  d   k(  sJ |j                  d   j                  |j                  d         rJ |j                  d   |j                  d   k7  sJ |j                  d   dk7  sJ y )Nr   r   r   zarbitrary objectr   r   )	r	   r   r   r+   r/   r<   ParquetSchemar=  ColumnSchema)rS   rT   fileh2fileh3s       r\   test_compare_schemasrP  R  s   	e	$BR Eb!FbCaC12F ellB$4$4555<<u||,,,<<5<<'''<<v}}---<<6==(((<<----||""6==111<<6==((( ell1or777<<?!!%,,q/222<<?ell1o---||A%%ell1o666<<?ell1o---<<?0000ri   c                 "   d}t        j                  t        j                  |      t        j                  j                  |      dddg      }| dz  }t        j                  j                  |      }t        ||       t        j                  |      }t        j                  |d      }|j                  j                  |      sJ |j                  j                  |      sJ |j                  j                  d	   |j                  d	   k(  sJ y )
Nd   )r#   valuesr#   rS  r   ztest.parquetT)
memory_maps   pandas)r~   r   r   aranger    randnrb   r   r   r   r<   read_schemar/   r=  r$   )rf   NrS   	data_pathrc   read1read2s          r\   test_read_schemar\  m  s    A	1))//!$ "
$B
 .(IHH  $E	"NN9%ENN96E<<u%%%<<u%%%<<  +u~~i/HHHHri   c                 \   t        j                  dt        j                  g d      i      }t        j                  || dz         t        j
                  | dz        }|j                         }t        |d         dk(  sJ t        |d   d   d         dk(  sJ |d   d   d   d   d	   J y )
Nr_   r   r   r   
row_groupsr   r   r   rF   )rb   rc   r   r<   rd   r   r   r"   )rf   rc   r$   r   s       r\   #test_parquet_metadata_empty_to_dictr_    s    HHc288BW567ENN5'N23. 89H$$&M}\*+q000}\*1-i89Q>>>&q))4Q7EMMMri   c            	          d} d}t        j                  t        |       D ci c]+  }t        |      t        j
                  j                  d      - c}      }t        j                         5 }t        j                  ||       |j                         }d d d        t        j                  t        j                              }t        j                  t        j                  |            }t        |      D ]  }|j                  |        t        j                         5 }|j                  |       |j                         }d d d        t        j                  t        j                  |            }y c c}w # 1 sw Y   xY w# 1 sw Y   CxY w)Nrw   i  r   )rb   rc   r:   r   r   r    rV  r   r<   rd   r   r   r   r  r  )NCOLSNREPEATSr   rc   outbuforiginal_metadatar$   s           r\   "test_metadata_exceeds_message_sizerf    s"   
 EHHH5<H<ac!fbiioob11<HIE				 C
uc"lln 
! (()=> 45H8_""#45  
			 C$$S)lln 
!  45H I	 	  
!	 s   0E3,'E8 "F8FFc                    t        j                  dg di      }d}t        | |z        }d|z   }t        j                  ||       t        j
                  | |z        }|j                  }t        j
                  |      j                  |      sJ t        j
                  |t                     j                  |      sJ t        j
                  |d|        j                  |      sJ t        j                  |      j                  |      sJ t        j                  |t                     j                  |      sJ t        j                  |d|        j                  |      sJ t        j                  |       5  t        j
                  |t                     j                  |      sJ t        j                  |t                     j                  |      sJ 	 d d d        y # 1 sw Y   y xY w)Nr_   r`   r   zfile:///
filesystem)rb   rc   r   r<   rd   r   r/   r=  r   rW  r   
change_cwd)rf   rc   fnamerB   file_urir$   r/   s          r\   test_metadata_schema_filesystemrm    s   HHc9%&E EGeO$II%HNN5)$ %0H\\FH%,,X666o/1171AB B BHWI.006x0@A A A >>(#**6222>>o/117@ @ @>>HWI.006v? ? ? 
	!o/1171AB 	B B ~~o/117@ 	@ @ 
"	!	!s    A!G++G4c                     t        j                  dg di      } t        j                         5 }t        j                  | |       |j                         }d d d        t        j                  t        j                              }d}t        j                  t        |      5  |j                  d        d d d        y # 1 sw Y   ixY w# 1 sw Y   y xY w)Nr_   r`   z#Argument 'other' has incorrect typer   )rb   rc   r   r<   rd   r   r   r   r7   r8   	TypeErrorr=  )rc   rc  rd  re  r   s        r\   test_metadata_equalsrp    s    HHc9%&E				 C
uc"lln 
! (()=>1E	y	.  & 
/	. 
!	  
/	.s   'B="C	=C	Czt1,t2,expected_errorcol1r   col2z$The two columns with index 0 differ.)rq  rr  col3z&This schema has 2 columns, other has 1c                 t   t        j                  |       }t        j                  |      }t        j                         }t        j                         }t	        j
                  ||       t	        j
                  ||       |j                  d       |j                  d       t	        j                  |      j                  }t	        j                  |      j                  }|r;d}	t        j                  t        |	|z         5  |j                  |       d d d        y |j                  |       y # 1 sw Y   y xY w)Nr   z(AppendRowGroups requires equal schemas.
r   )rb   rc   ioBytesIOr<   rd   seekre   r$   r7   r8   r>  r  )
t1t2expected_errortable1table2buf1buf2meta1meta2prefixs
             r\   $test_metadata_append_row_groups_diffr    s     XXb\FXXb\F::<D::<DNN64 NN64 IIaLIIaLNN4 ))ENN4 ))E<]]<v/FG##E* HG 	& HGs   D..D7c                 ,   |\  }}| dz  }| dz  }| dz  }| dz  }| d}t        j                  dt        d      i      }	t        j                  |	j
                  |g        t        j                  |	j
                  |g t                      t        j                  |	j
                  |j                         g        |j                  d	      5 }
t        j                  |	j
                  |
g        d d d        t        j                  |	j
                  |g |       |j                         |j                         cxk(  rK|j                         cxk(  r7|j                         cxk(  r#|j                  |      j                         k(  sJ  J y # 1 sw Y   xY w)
Nr  r  meta3meta4z/meta5rW   r   rh  zwb+)rb   rc   r:   r<   r-  r/   r   as_urir  
read_bytesread)rf   s3_example_s3fss3_fss3_pathr  r  r  r  meta5rc   meta4_streams              r\   (test_write_metadata_fs_file_combinationsr    sc   $NE7gEgEgEgEivEHHeU1X&'E ellE2. ellE2/:KL ellELLNB7 
E	l
%,,b9 
 ellE2%@!1!1!3 $$!&!1!1!3$::e!!#$ $ $ $ $ 
	s   "F

Fc                     t        j                  | dz        }|j                  d      j                  d      j                  }|dddk(  sJ |j                  d      j                  d      j                  }|J y )Nz'column_chunk_key_value_metadata.parquetr   s   barri   )s   foos   thisiskeywithoutvaluer   )r<   r   r;   r>   r$   )parquet_test_datadirr$   key_value_metadata1key_value_metadata2s       r\   $test_column_chunk_key_value_metadatar    s     4 I!J KH",,Q/66q9BB6S"QQQQ",,Q/66q9BB&&&ri   )Kr   r   collectionsr   ru  numpyr   ImportErrorr7   pyarrowrb   pyarrow.tests.parquet.commonr   r   
pyarrow.fsr   pyarrow.testsr   pyarrow.parquetparquetr<   r   pandasr~   pandas.testingtestingtmr	   mark
pytestmarkr]   rh   parametrizeuint8uint16r   r   int8int16r   r   r   r   chrbinaryencodebool_r   r   r   r   r   r   r   r   r
  r  r&  r8  filterwarningsrD  rJ  rP  r\  r_  slowlarge_memoryrf  rm  rp  r:   r  s3r  r  r   ri   r\   <module>r     si  $   # 	   K &  9
< [[  
 Y# Y#x< 	 
XRXXZ!Q1dC	YRYY['1aAtD	YRYY['1aAtD	YRYY['1aAtD	gbggi"aAtD	hbhhj'2q!QE	hbhhj'2q!QE	hbhhj'2q!QE'T31d	

 (dCAt	

 c$iu-yryy{#s4y//8!Q	

 -hbhhjudAq$	

 1)"))+'4At	
3)T/U) V/2 > > $F#>2;j/$4*54p7 '% '%T64 AB(
 C(
V 1 14 I I(	N 6  60 @F	' /eBi659-t4eBi659-+-Bir+feBi-@-/	2 ''. $ $@'{  	B  	B  NBs4   N$ N2 O  $N/.N/2N=<N= 	OO