
    z-Ph^l                     ,   d dl Z d dlZd dlmZ d dlZ	 d dlZn# e$ r dZY nw xY w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 n# e$ r dZY nw xY w	 d dlZd dlmZ d dlmZ n# e$ r dxZZY nw xY wej        j        Zej        j        d             Zd	 Zej        j        ej                             d
g d e
j!                    ddddddfg d e
j"                    ddddddfg d e
j#                    ddddddfg d e
j$                    ddddddfg d e
j%                    ddddddfg d e
j&                    ddddddfg d e
j'                    ddddddfg d e
j(                    ddddddfg d e
j)                    ddddddfg d e
j*                    ddddddfdd e+d          ddg e
j,                    dd e+d          -                    d          dddfg d e
j.                    dd d!d d"dfg d# e
j,                    dd$d%dddfg          d&                         Z/d' Z0ej        j        d(             Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8ej        j        d0             Z9d1 Z:ej        ;                    d2          d3             Z<d4 Z=ej        j        d5             Z>ej        j        d6             Z?d7 Z@ej        jA        ej        jB        d8                         ZCd9 ZDd: ZEej                             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j        jH        dD             ZIdE ZJdF ZKdS )G    N)OrderedDict)_check_roundtripmake_sample_file)LocalFileSystem)util)_write_table)alltypes_samplec                     t          d          } |                     t          | j                            } t          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 |j        dk    sJ |j        dk    sJ |j        d	k    sJ |j        d
k    sJ |d         }|j        j        dk    sJ t;          j        t>                    5  ||dz             d d d            n# 1 swxY w Y   t;          j        t>                    5  |d          d d d            n# 1 swxY w Y   tA          |j                  D ]}|!                    |          }t#          |tD          j#                  sJ t          |           tA          |j                  D ]B}|$                    |          }	t#          |	tD          j%                  sJ t          |	           Ct;          j        t>                    5  |!                    d           d d d            n# 1 swxY w Y   t;          j        t>                    5  |!                    |j        dz              d d d            n# 1 swxY w Y   |!                    d          }|j        t          |           k    sJ |j        |dz   k    sJ |j&        dk    sJ t;          j        t>                    5  |$                    d          }	d d d            n# 1 swxY w Y   t;          j        t>                    5  |$                    |dz             }	d d d            n# 1 swxY w Y   |$                    d          }	|	j'        dk    sJ |	j(        dk    sJ |	j        d	k    sJ |	j)        dk    sJ |	j*        dk    sJ |	j+        du sJ t#          |	j,        tD          j-                  sJ |	j.        dk    sJ t_          |	j0                  ddhk    sJ |	j1        du sJ |	j2        J |	j3        dk    sJ |	j4        dk    sJ |	j5        dk    sJ t;          j        tl                    5  |	j7         d d d            n# 1 swxY w Y   t;          j        tl                    5  |	j8         d d d            d S # 1 swxY w Y   d S )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
             c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyarrow/tests/parquet/test_metadata.pytest_parquet_metadata_apir]   7   s   	e	$	$	$B	F2:..	/	/By  G#b'' ::BHR  E
OOE >DJJJ=CGG####uqy((((!####%''''DO++++d*C00000dmT***** \F;&    v;;%!)####LLL
)CIII8rz!}$$$$#q((((#q((((#q((((	))))'''')K#(I5555	z	"	"  uqy               
z	"	"  r

               D'((  ..$$'2#677777W,-- 	 	C~~c**Hh(>?????NNNN	
 
z	"	"  r               
z	"	" 0 0t*Q.///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 nnQGs2ww&&&&%!)++++"Q&&&&	z	"	" & &>>"%%& & & & & & & & & & & & & & & 
z	"	" - ->>%!),,- - - - - - - - - - - - - - - ~~a  H1$$$$####!Y....%''''"f,,,, D((((h)2=999998++++x!""w&66666'50000*222$q(((()A----+a////	*	+	+                                 	*	+	+ # #""# # # # # # # # # # # # # # # # # #s   	H!!H%(H%	II!I,MMM2NN #N P..P25P2Q77Q;>Q;VVV9WWWc                     t          j        dg di          }t          j        || dz             t          j        | dz            }|j                            d                              d          j         d S )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      su    Hc999%&&EN5'$DDEEE>',L"LMML##A&&--a0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                            ||	d          }
t          |
          }|j        }|	                    d          }|
                    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 d S )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Y../00FH  F ??EU##E>DnnQG~~a  HD$),,,,,$),,,,,?j((((?j(((( .0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      s\    rz||4%<  4''			4%<  5((u}ri   c                     t          j        dt          j        t           j        gd          i          } t	          t
          j                            |                     j        }|	                    d          
                    d          j        j        rJ |	                    d          
                    d          j        j        J d S )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    	sBIrvh6FGGGH	I	IBBH004455>D~~a  ''**5AAAA>>!##A&&15=====ri   c                 j   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                            t          j        ||g|          gdg          }t%          | d                    |          z            }t)          j        ||d           t)          j        |          }|j                            d                              d          j        }	|	j        |k    sJ |	j        |k    sJ d S )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      s    &	4*bikk*-3mBAt,,hmBAt.L.LioomBAt,,hmBAt.L.LiooaQ1d;;aQ1d;;l4  " aQ1d;;aQ1d;;l4  " mD!R((mD!R((ikk oh''oh''mB""$!%E( '0&6&6 $ $""GWcH  "(GW+=C"H"H"H!I"'* *7188;;<==
q$....^D!!%%a((//22=yG####yG#####$ $ri   c           
         t           j                            t          dt          j        g d          fdt          j        g d          fg                    }t          || dz             t          j        | dz            }dD ]>}|                    d          	                    |          }|j
        du sJ |j        J ?t          || d	z  d
           t          j        | d	z            }dD ]>}|                    d          	                    |          }|j
        d
u sJ |j        J ?t          || dz  dg           t          j        | dz            }|                    d          	                    d          }|                    d          	                    d          }|j
        du sJ |j
        d
u sJ |j        J |j        J d S )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   H  "(999%%&"(???++,
 	 	 E .0111Gn455D ) )^^A%%c**$&&&&}((((/1EJJJJGo566D % %^^A%%c**%''''}$$$$/1SEJJJJGo566D>>!##A&&D>>!##A&&D$$$$%%%%?&&&?"""""ri   c                  J   t          j        d          } |                                 ddddk    sJ t          j        ddd          } |                                 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                            ||          \  }}|dk    sJ |dk    sJ t           j                            |||          }||k    sJ t           j                            |dd          }t          j        ddd          t          j        d	dd          f}||k    sJ t           j                            |d          }|dk    sJ t           j                            |d          dk    sJ t          j	        t                    5  t           j                            |d           d d d            n# 1 swxY w Y   t          j	        t          d          5  t          j        d	d          t          j        dd          f}t           j                            ||           d d d            d S # 1 swxY w Y   d S )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  st   "2&&K  % %     "14HHHK  % %     Ybhjj)C+<=>>F
t,,,
u---L "$!1!=!=fl!S!SJBBBBBX%%%% " 0 > >
N!, !,$4444#11*: 2 G GL 	u$???
t>>>H 8#### )77CC####''33~EEEE	z	"	" R R
&&v0OQQQR R R R R R R R R R R R R R R 
z)F	G	G	G ; ;QD111QE222
 	$$V\:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s%   +!HHH>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                            | |          \  }}|d	k    sJ t          |          dk    sJ |d         d
k    sJ |d         dk    sJ d S )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    YYbhjj)C+<=>>XZZ   F 	t,,,
u---O
 "$!1!=!=fo!V!VJX%%%%z??aa=11111a=.......ri   c                  ^   t          j        g dg dd          } t          j        ddd          t          j        dd	          f}t          j                    }t          | ||
           t          j        |                                          }t          j        |          }||	                    d          j
        k    sJ |                                }|                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ d S )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   |  s9   H999???;;<<E 	aDdKKK
aE:::O "$$F@@@@_V__..//F ''Hh0033CCCCC$$&&M]++q0000Z((A-----..!333333ri   c                  B   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 |D             }t          j        |t          j        |                    }t          j                    }t          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 d S )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   -1000c                     g | ]}g S r   r   ).0_s     r\   
<listcomp>z*test_field_id_metadata.<locals>.<listcomp>  s    1Bri   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    s1   "HHWbhjjHf3EFFFEXh		! !$f-/ / /F 	"(**68T03 	4 	4 	4
HRXlBHJJ(0%'8: : : ; ;&		( 	( 	(
 	29fX..(F9KLLL


++
("(**#V,	. 	. 	.
$bhjj#X.	0 	0 	0F  DHT")F"3"3444E


!
!CN5#||~~H	11	2	2B_F!9h'4////!9h'61111Jx(E1111 o1O#H-6666!9L *f4444&+A.'1V;;;;,1!4&x0F::::!9%%% !9h'61111!9h'8333333ri   c                  z   dD ]} t          j        dg di          }t          j                    }t          |||            t          j        |                                          }t          j        |          }|                    d          	                    d          }|j
        | u sJ |j        | u sJ d S )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    ) 7 7#yyy)**&((UF5EFFFF!2!233 #F++""))!,,"&66666"&6666667 7ri   c                 X   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                            |          }d }|D ]l}g }t          j        |t          | |z            |           |d                             |           |	|d         }Q|	                    |d                    mt          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          j        |          }|                                }	|                                }
|
D ]}|dk    r|
|         |	|         k    sJ |
d         dk    sJ |
d         dk    sJ |
d         dk    sJ |
d         dk    sJ |	d         dk    sJ d S )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)    sQ   ')?@I7[())H 
yy||a&1a&1a&)  
 
B
 H  $$E E - -
uc'H"455*.	0 	0 	0 	0Qh'''=GEE##DG,,,, 
h		 %!!!$$$% % % % % % % % % % % % % % % H%%D	B
--//C ' '###s8r#w&&&&}""""z?a A%%%% !Q&&&& 1$$$$$$s   C>>DDc                    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          |	          k    sJ d S )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_hashingr;    sQ   +%&&Ei)9:;;Ggu%%%$U++M +%&&Ei)9:;;Ggu%%%$U++M +%&&Ei)9:;;Ggu%%%$U++M $}"5"55555$}"5"5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                                        }|                    |          sJ |j        rd|j        vsJ dD ]D}t          j        |||           t          j        |          }|dk    rdnd}|j	        |k    sJ Et          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            d S # 1 swxY w Y   d S )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<   r0  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_metadatarG    sa   w#$$DY(89::F fd####D))L")99;;O!!&)))))  ?o&>>>>> ) ? ?
&$8888'-- %,u$4$455%*.>>>>>> HAq6R11&AAAEN5'N2333#C.(@$A$ABBL,)E    (..+q00002C	|3	/	/	/ 
 

I~}566lL%A	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   .GG
G
c                      t          j        t          j        dd          gdddz  i          } t          j        t	          d          g|           }t          |           d S )	Nf0doublelarger   i r   r   r   )rb   r/   r   rc   r:   r   )	my_schemarc   s     r\   test_table_large_metadatarM  I  sg    	28D(334$+S8^#<> > >I HeBii[333EUri   c                     t          d          } t          |           }t          |           }t          | | j        d d d                            }t          |j        t
          j                  sJ |j                            |j                  sJ |j        |j        k    sJ |j                            |j                  sJ |j        |j        k    sJ |j        dk    sJ |j                            |j                  rJ |j        |j        k    sJ t          |j        d         t
          j                  sJ |j        d                             |j        d                   sJ |j        d         |j        d         k    sJ |j        d                             |j        d                   rJ |j        d         |j        d         k    sJ |j        d         dk    sJ d S )Nr   r   r   zarbitrary objectr   r   )	r	   r   r   r+   r/   r<   ParquetSchemar@  ColumnSchema)rS   rT   fileh2fileh3s       r\   test_compare_schemasrS  R  s   	e	$	$	$BR  Eb!!FbCCaC122F elB$455555<u|,,,,,<5<''''<v}-----<6=((((<-----|""6=11111<6=(((( el1or77777<?!!%,q/22222<?el1o----|A%%el1o66666<?el1o----<?0000000ri   c                    d}t          j        t          j        |          t          j                            |          dddg          }| dz  }t          j                            |          }t          ||           t          j        |          }t          j        |d          }|j                            |          sJ |j                            |          sJ |j        j        d	         |j        d	         k    sJ d S )
Nd   )r#   valuesr#   rV  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H  $$E	"""N9%%EN9666E<u%%%%%<u%%%%%< +u~i/HHHHHHHri   c                    t          j        dt          j        g d          i          }t          j        || dz             t          j        | dz            }|                                }t          |d                   dk    sJ t          |d         d         d                   dk    sJ |d         d         d         d         d	         J d S )
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_dictrb    s    Hc28BW555677EN5'N2333. 899H$$&&M}\*++q0000}\*1-i899Q>>>>&q))4Q7EMMMMMri   c                     d} d}t          j        d t          |           D                       }t          j                    5 }t	          j        ||           |                                }d d d            n# 1 swxY w Y   t	          j        t          j        |                    }t	          j        t          j        |                    }t          |          D ]}|	                    |           t          j                    5 }|
                    |           |                                }d d d            n# 1 swxY w Y   t	          j        t          j        |                    }d S )Nrw   i  c                 h    i | ]/}t          |          t          j                            d           0S )r   )r   r   r    rY  )r   r   s     r\   
<dictcomp>z6test_metadata_exceeds_message_size.<locals>.<dictcomp>  s.    HHHac!ffbioob11HHHri   )rb   rc   r:   r   r<   rd   r   r   r   r  r   )NCOLSNREPEATSrc   outbuforiginal_metadatar$   r   s           r\   "test_metadata_exceeds_message_sizerk    s   
 EHHHH5<<HHHIIE			 	  C
uc"""llnn               ()=)=>> 4 455H8__ 6 6""#45555			 	  C$$S)))llnn                4 455HHHs$   *A99A= A=
*E  EEc                 >   t          j        dg di          }d}t          | |z            }d|z   }t          j        ||           t          j        | |z            }|j        }t          j        |                              |          sJ t          j        |t                                                    |          sJ t          j        |d|                                |          sJ t          j	        |                              |          sJ t          j	        |t                                                    |          sJ t          j	        |d|                                |          sJ t          j        |           5  t          j        |t                                                    |          sJ t          j	        |t                                                    |          sJ 	 d d d            d S # 1 swxY w Y   d S )Nr_   r`   r   zfile:///
filesystem)rb   rc   r   r<   rd   r   r/   r@  r   rZ  r   
change_cwd)rf   rc   fnamerB   file_urir$   r/   s          r\   test_metadata_schema_filesystemrr    s   Hc999%&&E EGeO$$II%HN5)$$$ %00H\FH%%,,X66666o//1 1 1171A1AB B B.W..0 0 006x0@0@A A A >(##**622222>o//1 1 117@ @ @>.W..0 0 006v? ? ? 
	!	! @ @o//1 1 1171A1A	B 	B 	B ~o//1 1 117	@ 	@ 	@ 	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   A/HHHc                     t          j        dg di          } t          j                    5 }t          j        | |           |                                }d d d            n# 1 swxY w Y   t          j        t          j        |                    }d}t          j	        t          |          5  |                    d            d d d            d S # 1 swxY w Y   d S )Nr_   r`   z#Argument 'other' has incorrect typer   )rb   rc   r   r<   rd   r   r   r   r7   r8   	TypeErrorr@  )rc   rh  ri  rj  r   s        r\   test_metadata_equalsru    sI   Hc999%&&E			 	  C
uc"""llnn               ()=)=>>1E	y	.	.	. ' '  &&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's#   *A""A&)A&0CCCzt1,t2,expected_errorcol1r   col2z$The two columns with index 0 differ.)rv  rw  col3z&This schema has 2 columns, other has 1c                 |   t          j        |           }t          j        |          }t          j                    }t          j                    }t	          j        ||           t	          j        ||           |                    d           |                    d           t	          j        |          j        }t	          j        |          j        }|rPd}	t          j
        t          |	|z             5  |                    |           d d d            d S # 1 swxY w Y   d S |                    |           d S )Nr   z(AppendRowGroups requires equal schemas.
r   )rb   rc   ioBytesIOr<   rd   seekre   r$   r7   r8   rA  r  )
t1t2expected_errortable1table2buf1buf2meta1meta2prefixs
             r\   $test_metadata_append_row_groups_diffr    sU    Xb\\FXb\\F:<<D:<<DN64   N64   IIaLLLIIaLLLN4  )EN4  )E '<]<v/FGGG 	+ 	+##E***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	&&&&&s   7DD!Dc                 L   |\  }}| 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        |                                g            |                    d	          5 }
t          j        |	j        |
g            d d d            n# 1 swxY w Y   t          j        |	j        |g |           |	                                |	                                cxk    r]|	                                cxk    rD|	                                cxk    r+|                    |          
                                k    sn J d S )
Nr  r  meta3meta4z/meta5rW   r   rm  zwb+)rb   rc   r:   r<   r0  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    s   $NE7gEgEgEgEEHeU1XX&''E elE2... elE2/:K:KLLLL elELLNNB777 
E		 :l
%,b999: : : : : : : : : : : : : : : elE2%@@@@!1!1!3!3 $ $ $ $$ $ $ $!&!1!1!3!3$ $ $ $::e!!##$ $ $ $ $ $ $ $s   C00C47C4c                    t          j        | dz            }|                    d                              d          j        }|dddk    sJ |                    d                              d          j        }|J d S )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 KH",,Q//66q99B6S"Q"QQQQQ",,Q//66q99B&&&&&ri   c                  $   d } t          j        t           | d                    5  t          j                     d d d            n# 1 swxY w Y   t          j        t           | d                    5  t          j                     d d d            n# 1 swxY w Y   t          j        t           | d                    5  t          j                     d d d            n# 1 swxY w Y   t          j        t           | d                    5  t          j                     d d d            n# 1 swxY w Y   t          j        t           | d                    5  t          j                     d d d            d S # 1 swxY w Y   d S )Nc                     d|  dS )NzDo not call z's constructor directlyr   )r   s    r\   rF  z.test_internal_class_instantiation.<locals>.msg   s    8a8888ri   rG   r   ParquetLogicalTyper?   r=   FileMetaData)	r7   r8   rt  r<   rG   r  r?   r=   r  )rF  s    r\   !test_internal_class_instantiationr    s   9 9 9 
yL(9(9	:	:	:  
               
y,@(A(A	B	B	B    
                              
y,A(B(B	C	C	C ! !
   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
y,>(?(?	@	@	@  
               
yN(;(;	<	<	<  
                 sY   AAA7BBBC&&C*-C*D55D9<D9$FF	F	)Lr   r   collectionsr   rz  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)  r;  filterwarningsrG  rM  rS  r_  rb  slowlarge_memoryrk  rr  ru  r:   r  s3r  r  r  r   ri   r\   <module>r     s  $   # # # # # # 				   	BBB      K K K K K K K K & & & & & &            9999999   	BBB<<<<<<<   NB [ 
 Y# Y# Y#x< < < 	 
		XRXZZ!Q1dC			YRY[['1aAtD			YRY[['1aAtD			YRY[['1aAtD			gbgii"aAtD			hbhjj'2q!QE			hbhjj'2q!QE			hbhjj'2q!QE'''T31d	

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

 cc$iiu-yry{{#ss4yy//88!Q	

 -,,hbhjjudAq$	

 100)")++'4At	
3) )T/ /U) ) V/2   > > > $  $  $F# # #>2; 2; 2;j/ / /$4 4 4*54 54 54p7 7 7 '% '% '%T6 6 64 ABB(
 (
 CB(
V   1 1 14 I I I(	N 	N 	N 6 6  60 @  @  @F	' 	' 	' /eeBii65599-t4eeBii65599-+-eBiir++feeBii-@-/	2  ' ' '. $ $ $@' ' '    s0    ##A AAA/ /	A;:A;