
    <>iTl                        S SK r S SKrS SKJr  S SKr S SKrS SKrS SK	r
S SKJrJr  S SKJr  S SKJr   S SKJr  S SKJr   S SKrS SKJr  S SKJr  \R8                  R&                  r\R8                  R,                  S 5       rS	 r\R8                  R,                  \R8                  RA                  S
/ SQ\
RB                  " 5       SSSSSS4/ SQ\
RD                  " 5       SSSSSS4/ SQ\
RF                  " 5       SSSSSS4/ SQ\
RH                  " 5       SSSSSS4/ SQ\
RJ                  " 5       SSSSSS4/ SQ\
RL                  " 5       SSSSSS4/ SQ\
RN                  " 5       SSSSSS4/ SQ\
RP                  " 5       SSSSSS4/ SQ\
RR                  " 5       SSSSSS4/ SQ\
RT                  " 5       SSSSSS4SS\+" S5      SS/\
RX                  " 5       SS\+" S5      R[                  S5      SSS4/ SQ\
R\                  " 5       SS S!S S"S4/ S#Q\
RX                  " 5       SS$S%SSS4/5      S& 5       5       r/S' r0\R8                  R,                  S( 5       r1S) r2S* r3S+ r4S, r5S- r6S. r7S/ r8\R8                  R,                  S0 5       r9S1 r:\R8                  Rw                  S25      S3 5       r<S4 r=\R8                  R,                  S5 5       r>\R8                  R,                  S6 5       r?S7 r@\R8                  R                  \R8                  R                  S8 5       5       rCS9 rDS: rE\R8                  RA                  S;S<\F" S=5      0S<\F" S=5      0S4S<\F" S=5      0S>\F" S=5      0S?4\F" S=5      \F" S=5      S@.SA\F" S=5      0SB445      SC 5       rG\R8                  R                  SD 5       rISE rJSF rKg! \ a    Sr GNf = f! \ a    Sr GNf = f! \ a    S=rr GNf = f)G    N)OrderedDict)_check_roundtripmake_sample_file)LocalFileSystem)util)_write_table)alltypes_samplec                     [        SS9n U R                  [        U R                  5      S9n [        R
                  R                  SS[        U 5      S9U l        [        U 5      n[        U R                  5      nUR                  n[        U5        UR                  [        U 5      :X  d   eUR                  US-   :X  d   eUR                  S:X  d   eUR                  S:X  d   eSUR                   ;   d   e[#        UR$                  [&        5      (       d   e[#        UR                  [(        5      (       d   eUR*                  nUR*                  UL d   e[        U5      US-   :X  d   e[        U5        US   n[        U5        UR,                  U R                  S   :X  d   eUR.                  S:X  d   eUR0                  S:X  d   eUR0                  S:X  d   eUR2                  S	:X  d   eUR4                  S
:X  d   eUS   nUR6                  R8                  S:X  d   e[:        R<                  " [>        5         XBS-        S S S 5        [:        R<                  " [>        5         US     S S S 5        [A        UR                  5       H  nURC                  U5      n[#        U[D        RF                  5      (       d   e[        U5        [A        UR                  5       H@  nURI                  U5      n	[#        U	[D        RJ                  5      (       d   e[        U	5        MB     M     [:        R<                  " [>        5         URC                  S5        S S S 5        [:        R<                  " [>        5         URC                  UR                  S-   5        S S S 5        URC                  S5      nUR                  [        U 5      :X  d   eUR                  US-   :X  d   eURL                  S:  d   e[:        R<                  " [>        5         URI                  S5      n	S S S 5        [:        R<                  " [>        5         URI                  US-   5      n	S S S 5        URI                  S5      n	U	RN                  S:X  d   eU	RP                  S:X  d   eU	R2                  S	:X  d   eU	RR                  S:X  d   eU	RT                  S:X  d   eU	RV                  SL d   e[#        U	RX                  [D        RZ                  5      (       d   eU	R\                  S:X  d   e[_        U	R`                  5      SS1:X  d   eU	Rb                  SL d   eU	Rd                  b   eU	Rf                  S:  d   eU	Rh                  S:  d   eU	Rj                  S:  d   e[:        R<                  " [l        5         U	Rn                    S S S 5        [:        R<                  " [l        5         U	Rp                    S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)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
             b/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pyarrow/tests/parquet/test_metadata.pytest_parquet_metadata_apir]   7   sI   	e	$B	F2::.	/Byy  G#b' :BHR E

OE >>DJ==CG###uqy(((!###%'''DOO+++d**C0000dmmT**** \\F;;&   v;%!)###L
)CI88rzz!}$$$##q(((##q(((##q(((	)))''')K##((I555	z	"qy 
# 
z	"r
 
# D''(..$'2#6#67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98+++x!!"w&6666''5000**222$$q((())A---++a///	*	+ 
,	*	+"" 
,	+g 
#	" 
#	" 
#	" 
#	" 
#	" 
#	"$ 
,	+	+	+s`   8W "W2<X0XX(8X:Y
Y 
W/2
X
X
X%(
X7:
Y	
Y
Y+c                    [         R                  " S/ SQ05      n[        R                  " XS-  5        [        R                  " U S-  5      nUR
                  R                  S5      R                  S5      R                    g )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      s`    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                 |   [         R                  " SU 05      n[        R                  " [        R                  " SU5      /5      n	[        R
                  R                  XSS9n
[        U
5      nUR                  nUR                  S5      nUR                  S5      nUR                  nUR                  (       d   e[        XR                  U5      (       d   e[        XR                  U5      (       d   eUR                   U:X  d   eUR"                  U:X  d   eUR$                  U:X  d   eUR&                  U:X  d   eg )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   ?EU#E>>DnnQG~~a HD$),,,,$),,,,??j(((??j((( .000...ri   c                     U [         R                  " 5       :X  a  [        X-
  5      S:  $ U [         R                  " 5       :X  a  [        X-
  5      S:  $ X:H  $ )NgHz>gvIh%<=)rb   float32absfloat64)r6   leftrights      r\   r   r      sJ    rzz|4< 4''		4< 5((}ri   c                     [         R                  " S[         R                  " [         R                  /SS905      n [	        [
        R                  R                  U 5      5      R                  nUR                  S5      R                  S5      R                  R                  (       a   eUR                  S5      R                  S5      R                  R                  b   eg )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                    SS[         R                  " 5       4SS[         R                  " 5       4SS[         R                  " 5       4[        R
                  " SSSS5      [        R
                  " S	SSS5      [         R                  " S
5      4[        R
                  " SSSS5      [        R
                  " S	SSS5      [         R                  " S5      4[        R                  " SSSSSSS5      [        R                  " SSSSSSS5      [         R                  " S
5      4[        R                  " SSSSSSS5      [        R                  " SSSSSSS5      [         R                  " S5      4[        R                  " SSS5      [        R                  " SSS5      [         R                  " 5       4[        R                  " S5      [        R                  " S5      [         R                  " SS5      4/	n[        U5       H  u  nu  p4n[         R                  R!                  [         R"                  " X4/US9/S/5      n[%        U SU S3-  5      n[&        R(                  " XgSS9  [&        R*                  " U5      nUR,                  R/                  S5      R1                  S5      R2                  n	U	R4                  U:X  d   eU	R6                  U:X  a  M   e   g )N
   l   5f|~W	 l    u   ähnlichu   öffentlich   r   rw      msusi           z20.123z20.124   r   r6   rW   examplez.parquetr   version)rb   uint64uint32utf8datetimetimetime32time64	timestampdatedate32decimalDecimal
decimal128	enumerater   from_arraysarraystrr<   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      sO    &		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""GcHH  "((G+=C"H!I"'*7wqc223
q.^^D!%%a(//2==yyG###yyG### '7ri   c           
         [         R                  R                  [        S[         R                  " / SQ5      4S[         R                  " / SQ5      4/5      5      n[        XS-  5        [        R                  " U S-  5      nS HC  nUR                  S5      R                  U5      nUR                  SL d   eUR                  b  MC   e   [        XS	-  S
S9  [        R                  " U S	-  5      nS HC  nUR                  S5      R                  U5      nUR                  S
L d   eUR                  c  MC   e   [        XS-  S/S9  [        R                  " U S-  5      nUR                  S5      R                  S5      nUR                  S5      R                  S5      nUR                  SL d   eUR                  S
L d   eUR                  c   eUR                  b   eg )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                  ,   [         R                  " S5      n U R                  5       SSSS.:X  d   e[         R                  " SSSS9n U R                  5       SSSS.:X  d   e[        R                  " S[        R
                  " 5       4S[        R
                  " 5       4/5      n[         R                  " S	SS
9[         R                  " SSS
94n[         R                  R                  X5      u  p4US:X  d   eUS:X  d   e[         R                  R                  XU5      nXR:X  d   e[         R                  R                  USSS9n[         R                  " SSSS9[         R                  " S	SSS94nX&:X  d   e[         R                  R                  US5      nUS:X  d   e[         R                  R                  US5      S:X  d   e[        R                  " [        5         [         R                  R                  US5        S S S 5        [        R                  " [        SS9   [         R                  " S	SS9[         R                  " SSS94n[         R                  R                  X5        S S S 5        g ! , (       d  f       Nz= f! , (       d  f       g = f)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  sg   ""2&K %    ""14HK %    YYbhhj)C+<=>F
t,
u-L "$!1!1!=!=f!SJBBBBX%%% " 0 0 > >N!,$444##11*: 2 GL 	u$?
t>H ### ))77C###''3~EEE	z	"
&&v0OQ 
# 
z)F	GQD1QE2
 	$$V: 
H	G 
#	" 
H	Gs   !I4!A
J4
J
Jc                     [         R                  " [         R                  " S[         R                  " 5       4S[         R                  " 5       4/5      [         R                  " 5       S.5      n [        R
                  " SSS9[        R
                  " SSS9/n[        R
                  R                  X5      u  p#US	:X  d   e[        U5      S:X  d   eUS   S
:X  d   eUS   S:X  d   eg )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!=!=f!VJX%%%z?aa=1111a=....ri   c                  0   [         R                  " / SQ/ SQS.5      n [        R                  " SSSS9[        R                  " SSS	94n[         R                  " 5       n[        XUS
9  [         R                  " UR                  5       5      n[        R                  " U5      nXR                  S5      R                  :X  d   eUR                  5       nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eg )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003CCCCC$$&M]+q000Z(A----.!333ri   c                     Sn [         R                  " S[         R                  " 5       U S0S9n[         R                  " S[         R                  " U/5      U S0S9n[         R                  " S[         R                  " 5       SS	U S
0S9[         R                  " S[         R                  " [         R                  " S[         R                  " 5       U S0S95      U S0S9[         R                  " S[         R                  " U/5      U S0S9[         R                  " S[         R                  " 5       5      [         R                  " S[         R                  " 5       U S0S9[         R                  " S[         R                  " 5       U S0S9/nU Vs/ s H  n/ PM     nn[         R
                  " U[         R                  " U5      S9n[         R                  " 5       n[        R                  " Xg5        UR                  5       n[        R                  " [         R                  " U5      5      n	U	R                  n
U
S   R                  U    S
:X  d   eU
S   R                  S   S	:X  d   eU
S   nUR                  U    S:X  d   eUR                  R                   nUR                  U    S:X  d   eU
S   nUR                  U    S:X  d   eUR                  S   nUR                  U    S:X  d   eUR                  S   nUR                  U    S:X  d   eU
S   R                  b   eU
S   R                  U    S:X  d   eU
S   R                  U    S:X  d   eg s  snf )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                     S H  n [         R                  " S/ SQ05      n[         R                  " 5       n[        XU S9  [         R                  " UR                  5       5      n[        R                  " U5      nUR                  S5      R                  S5      nUR                  U L d   eUR                  U L a  M   e   g )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)*&&(U5EF!23 ##F+"))!,""&6666""&6666 *ri   c                    SS/n[        U S-  5      n[        R                  " / SQ/ SQSS/SS/SS	//S
.5      n[        R                  R                  U5      nS nU HX  n/ n[        R                  " U[        X-  5      US9  US   R                  U5        Uc  US   nMD  UR                  US   5        MZ     [        US5       nUR                  U5        S S S 5        [        R                  " U5      nUR                  5       n	UR                  5       n
U
 H  nUS:w  d  M  X   X   :X  a  M   e   U
S   S:X  d   eU
S   S:X  d   eU
S   S:X  d   eU
S   S:X  d   eU	S   S:  d   eg ! , (       d  f       N= f)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'"45*.	0Qh'=GE##DG,  
h	!!!$ 
 H%D	B
--/C##8rw&&&  }"""z?a A%%% !Q&&& 1$$$ 
	s   E**
E8c                    [        U S-  5      n[        R                  " SS/5      n[        R                  " X!5        [        R
                  " U5      n[        U S-  5      n[        R                  " SS/5      n[        R                  " XT5        [        R
                  " U5      n[        U S-  5      n[        R                  " SS/5      n[        R                  " X5        [        R
                  " U5      n	[        U5      [        U5      :X  d   e[        U5      [        U5      :X  d   e[        U5      [        U	5      :w  d   eg )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g%$$U+M +%&Eii)9:;Gg%$$U+M +%&Eii)9:;Gg%$$U+M $}"5555$}"5555 $}"5555ri   z#ignore:Parquet format:FutureWarningc                    [        U S-  5      n[        R                  " SS/5      n[        R                  " X!5        [        R
                  " U5      nUR                  R                  5       nUR                  U5      (       d   eUR                  (       a  SUR                  ;  d   eS HJ  n[        R                  " X!US9  [        R
                  " U5      nUS:X  a  SOSnUR                  U:X  a  MJ   e   [        R                  " S	S
/SS/S.US9n[        R                  " XpS-  5        [        R
                  " [        U S-  5      5      n[        R                  " X!X3/S9  [        R
                  " U5      nUR                  S
:X  d   eSn	[        R                  " [        U	S9   [        R                  " [        R                  " SS/5      XU/S9  S S S 5        g ! , (       d  f       g = f)Nr$   r)  r*  s   ARROW:schema)1.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 f###D)L"))99;O!!&)))) o&>&>>>> )
&8''- %,u$45%**.>>>> ) HHAq6R1&AENN5N23##C.(@$ABL,)E ((.++q0002C	|3	/
II~}56L%A	
 
0	/	/s   (.G
G-c                      [         R                  " [         R                  " SS5      /SSS-  0S9n [         R                  " [	        S5      /U S9n[        U5        g )	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                  |   [        SS9n [        U 5      n[        U 5      n[        X R                  S S S2      5      n[        UR                  [
        R                  5      (       d   eUR                  R                  UR                  5      (       d   eUR                  UR                  :X  d   eUR                  R                  UR                  5      (       d   eUR                  UR                  :X  d   eUR                  S:w  d   eUR                  R                  UR                  5      (       a   eUR                  UR                  :w  d   e[        UR                  S   [
        R                  5      (       d   eUR                  S   R                  UR                  S   5      (       d   eUR                  S   UR                  S   :X  d   eUR                  S   R                  UR                  S   5      (       a   eUR                  S   UR                  S   :w  d   eUR                  S   S:w  d   eg )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5<<u||,,,,<<5<<'''<<v}}----<<6==(((<<----||""6==1111<<6==((( ell1or7777<<?!!%,,q/2222<<?ell1o---||A%%ell1o6666<<?ell1o---<<?0000ri   c                 2   Sn[         R                  " [        R                  " U5      [        R                  R                  U5      S.SS/S9nU S-  n[        R                  R                  U5      n[        XC5        [        R                  " U5      n[        R                  " USS9nUR                  R                  U5      (       d   eUR                  R                  U5      (       d   eUR                  R                  S	   UR                  S	   :X  d   eg )
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                 b   [         R                  " S[         R                  " / SS905      n[        R                  " XS-  5        [        R
                  " U S-  5      nUR                  5       n[        US   5      S:X  d   e[        US   S   S   5      S:X  d   eUS   S   S   S   S	   b   eg )
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NN5N23. 89H$$&M}\*+q000}\*1-i89Q>>>&q))4Q7EMMMri   c            	      P   Sn Sn[         R                  " [        U 5       Vs0 s H,  n[        U5      [        R
                  R                  S5      _M.     sn5      n[         R                  " 5        n[        R                  " X45        UR                  5       nS S S 5        [        R                  " [         R                  " W5      5      n[        R                  " [         R                  " U5      5      n[        U5       H  nUR                  U5        M     [         R                  " 5        nUR                  U5        UR                  5       nS S S 5        [        R                  " [         R                  " U5      5      ng s  snf ! , (       d  f       N= f! , (       d  f       NO= f)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
u"lln 
! (()=> 45H8_""#45  
			 C$$S)lln 
!  45H I	 	  
!	 s   3F1'F,"F
F
F%c                 6   [         R                  " S/ SQ05      nSn[        X-  5      nSU-   n[        R                  " X5        [        R
                  " X-  5      nUR                  n[        R
                  " U5      R                  U5      (       d   e[        R
                  " U[        5       S9R                  U5      (       d   e[        R
                  " USU  3S9R                  U5      (       d   e[        R                  " U5      R                  U5      (       d   e[        R                  " U[        5       S9R                  U5      (       d   e[        R                  " USU  3S9R                  U5      (       d   e[        R                  " U 5         [        R
                  " U[        5       S9R                  U5      (       d   e[        R                  " U[        5       S9R                  U5      (       d   e S S S 5        g ! , (       d  f       g = f)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GO$II%HNN5$ 0H\\FH%,,X6666o/1171AB B BHWI.006x0@A A A >>(#**62222>>o/117@ @ @>>HWI.006v? ? ? 
	!o/1171AB 	B B ~~o/117@ 	@ @ 
"	!	!s   A'H


Hc                     [         R                  " S/ SQ05      n [         R                  " 5        n[        R                  " X5        UR                  5       nS S S 5        [        R                  " [         R                  " W5      5      nSn[        R                  " [        US9   UR                  S 5        S S S 5        g ! , (       d  f       Nn= f! , (       d  f       g = f)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
u"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                    [         R                  " U 5      n[         R                  " U5      n[        R                  " 5       n[        R                  " 5       n[        R
                  " X55        [        R
                  " XF5        UR                  S5        UR                  S5        [        R                  " U5      R                  n[        R                  " U5      R                  nU(       a8  Sn	[        R                  " [        X-   S9   UR                  U5        S S S 5        g UR                  U5        g ! , (       d  f       g = f)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NN6 NN6 IIaLIIaLNN4 ))ENN4 ))E<]]<v/FG##E* HG 	& HGs   	D66
Ec                 <   Uu  p#U S-  nU S-  nU S-  nU S-  nU S3n[         R                  " S[        S5      05      n	[        R                  " U	R
                  U/ 5        [        R                  " U	R
                  U/ [        5       S9  [        R                  " U	R
                  UR                  5       / 5        UR                  S	5       n
[        R                  " U	R
                  U
/ 5        S S S 5        [        R                  " U	R
                  U/ US9  UR                  5       UR                  5       s=:X  aN  UR                  5       s=:X  a9  UR                  5       s=:X  a$  UR                  U5      R                  5       :X  d   e   eg ! , (       d  f       N= f)
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    sa   $NE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                     [         R                  " U S-  5      nUR                  S5      R                  S5      R                  nUSSS.:X  d   eUR                  S5      R                  S5      R                  nUb   eg )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   c                     S n [         R                  " [        U " S5      S9   [        R                  " 5         S S S 5        [         R                  " [        U " S5      S9   [        R
                  " 5         S S S 5        [         R                  " [        U " S5      S9   [        R                  " 5         S S S 5        [         R                  " [        U " S5      S9   [        R                  " 5         S S S 5        [         R                  " [        U " S5      S9   [        R                  " 5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nc                     SU  S3$ )NzDo not call z's constructor directlyr   )r   s    r\   rC  .test_internal_class_instantiation.<locals>.msg   s    aS 788ri   rG   r   ParquetLogicalTyper?   r=   FileMetaData)	r7   r8   ro  r<   rG   r  r?   r=   r  )rC  s    r\   !test_internal_class_instantiationr    s    9 
yL(9	:
 
; 
y,@(A	B
 
C 
y,A(B	C
  
D 
y,>(?	@
 
A 
yN(;	<
 
=	< 
;	: 
C	B 
D	C 
A	@ 
=	<s;   D6 EEE*E;6
E
E
E'*
E8;
F	)Lr   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  r   ri   r\   <module>r     sT  $   # 	   K &  9
< [[  
 Y# Y#x< 	 
RXXZ!Q1dC	RYY['1aAtD	RYY['1aAtD	RYY['1aAtD	bggi"aAtD	bhhj'2q!QE	bhhj'2q!QE	bhhj'2q!QE'T31d	

 (dCAt	

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

 -bhhj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 ''. $ $@'M  	B  	B  NBs4   N' N6 O 'N32N36OO
OO