Ë
    Éš§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mZ d dl	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlmZmZmZ 	 d dlmZ d dlmZmZ 	 d dlZd dlmZ d d	l m!Z! d d
lm"Z" 	 d dl#Z$ejJ                  j,                  Z&d„ Z'd„ Z(ejJ                  jF                  d„ «       Z)ejJ                  jF                  d„ «       Z*ejJ                  j6                  d„ «       Z+ejJ                  j6                  d„ «       Z,d„ Z-ejJ                  j6                  d„ «       Z.d„ Z/d„ Z0d„ Z1ejJ                  jd                  d„ «       Z3ejJ                  j6                  d„ «       Z4ejJ                  j6                  d„ «       Z5d„ Z6ejJ                  j6                  d„ «       Z7d„ Z8ejJ                  js                  dd ejt                  «       g«      ejJ                  js                  dd«      d„ «       «       Z;d „ Z<d!„ Z=d"„ Z>d#„ Z?d$„ Z@d%„ ZAd&„ ZBd'„ ZCd(„ ZDd)„ ZEejJ                  j6                  d*„ «       ZFejJ                  j6                  d+„ «       ZGejJ                  j6                  d,„ «       ZHd-„ ZId.„ ZJejJ                  j6                  d/„ «       ZKd0„ ZLejJ                  j6                  ejJ                  jš                  ejJ                  j�                  d1«      ejJ                  j�                  d2«      ejJ                  j�                  d3«      d4„ «       «       «       «       «       ZOejJ                  js                  d5d6„ d7„ d8„ d9„ g«      ejJ                  js                  d:d;d<g«      d=„ «       «       ZPd>„ ZQd?„ ZRd@„ ZSdA„ ZTdB„ ZUdC„ ZVejJ                  j®                  dD„ «       ZXejJ                  js                  dEdFdGdHgg«      dI„ «       ZYy# e$ r dZY �Œhw xY w# e$ r dxZZY �Œaw xY w# e$ r dZ$Y �Œjw xY w)Jé    N)ÚOrderedDict)Úcopytree)ÚDecimal)Úfs)Úutil)Ú_check_roundtripÚ_roundtrip_tableÚ_test_table)Ú_read_tableÚ_write_table)Údataframe_with_lists)Úalltypes_samplec                 ó:  — t        j                  dg d¢i«      }t        j                  t        d¬«      5  t        || dz  d¬«       d d d «       t        j                  t        d¬«      5  t        || dz  d¬	«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)
NÚa©é   é   é   z"Unsupported Parquet format version©Úmatchztest_version.parquetz2.2©Úversionz%Unsupported Parquet data page version)Údata_page_version)ÚpaÚtableÚpytestÚraisesÚ
ValueErrorr   )Útempdirr   s     úcC:\Users\Luka\AppData\Local\Temp\pip-target-o84fipzb\lib\python\pyarrow/tests/parquet/test_basic.pyÚtest_parquet_invalid_versionr!   =   sƒ   € Ü�H‰H�cš9Ð%Ó&€EÜ	�‰”zÐ)MÖ	NÜ�U˜GÐ&<Ñ<ÀeÕL÷ 
Oä	�‰”zð *!ö 
"ä�U˜GÐ&<Ñ<Ø',õ	.÷
"ð 
"÷ 
OÐ	Nú÷
"ð 
"ús   µBÁ*BÂBÂBc                  ó®   — t        j                  g d¢dz  «      } t         j                  j                  | gdg¬«      }ddg}|D ]  }t	        ||¬«       Œ y )Nr   i † Úf0©Únamesi   i   )Údata_page_size)r   ÚarrayÚTableÚfrom_arraysr   )ÚarrÚtÚ
page_sizesÚtarget_page_sizes       r    Útest_set_data_page_sizer.   G   sT   € Ü
�(‰(’9˜vÑ%Ó
&€CÜ
�‰×Ñ˜c˜U¨4¨&ÐÓ1€Að ˜7Ð#€JÛ&ÐÜ˜Ð+;Ö<ñ 'ó    c                  ó8   — t        d«      } t        | ddd¬«       y )Néd   é
   r   ú2.4)r&   Úwrite_batch_sizer   )r
   r   ©r   s    r    Útest_set_write_batch_sizer6   Q   s   € ä˜Ó€EäØ˜b°1¸eör/   c                  ó²   — t        d«      } t        | ddd¬«       t        j                  t        «      5  t        | ddd¬«       d d d «       y # 1 sw Y   y xY w)Nr1   r   r2   r3   )Údictionary_pagesize_limitr&   r   r   )r
   r   r   r   Ú	TypeErrorr5   s    r    Ú"test_set_dictionary_pagesize_limitr:   Z   sH   € ä˜Ó€Eä�U°aØ$&°õ7ô 
�‰”yÕ	!Ü˜¸#Ø(*°Eõ	;÷ 
"×	!Ñ	!ús   ´AÁAc            	      óÂ  — g } t         j                  j                  t        d¬«      «      }| j	                  t         j
                  j                  |gdz  «      «       t        «       \  }}t         j                  j                  |«      }| j	                  t         j
                  j                  |gdz  «      «       dD ]  }dD ]  }| D ]  }t        |d||¬«       Œ Œ Œ! y )Nr2   ©Úsizer   )z1.0z2.0)TFú2.6)r   r   Úuse_dictionary)	r   ÚRecordBatchÚfrom_pandasr   Úappendr(   Úfrom_batchesr   r   )ÚtablesÚbatchÚdfÚ_r   r?   r   s          r    Útest_chunked_table_writerH   f   s¶   € ð €FÜ�N‰N×&Ñ&¤¸BÔ'?Ó@€EØ
‡M�M”"—(‘(×'Ñ'¨¨°!©Ó4Ô5Ü Ó"�E€BˆÜ�N‰N×&Ñ& rÓ*€EØ
‡M�M”"—(‘(×'Ñ'¨¨°!©Ó4Ô5ã+ÐÛ+ˆNÛ�Ü Ø 5Ø&7Ø#1ö3ñ  ñ ,ñ ,r/   c                 óH  — t        d¬«      }t        j                  j                  |«      }t	        |ddid¬«       t        | dz  «      }t        |d«      5 }t        ||d¬	«       d d d «       t        j                  |d¬
«      }|j                  |«      sJ ‚y # 1 sw Y   Œ4xY w)Nr2   r<   Ú
memory_mapTr>   ©Úread_table_kwargsr   Útmp_fileÚwbr   )rJ   ©r   r   r(   rA   r   ÚstrÚopenr   ÚpqÚread_pandasÚequals©r   rF   r   ÚfilenameÚfÚ
table_reads         r    Útest_memory_maprY   y   s�   € ä	˜bÔ	!€Bä�H‰H× Ñ  Ó$€EÜ�U¨|¸TÐ.BØ"õ$ô �7˜ZÑ'Ó(€HÜ	ˆh˜Ô	 Ü�U˜A uÕ-÷ 
ä—‘ °TÔ:€JØ×Ñ˜UÔ#Ð#Ñ#÷ 
Ð	úó   ÁBÂB!c                 ó‚  — t        j                  dg d¢i«      }t        | dz  «      }t        t        dd«      }t	        j
                  |t        j                  t        j                  z  t        j                  z  |z  d«      }t        j                  |d¬«      5 }t        j                  ||«       d d d «       t	        j
                  |t        j                  |z  «      }t        j                  |d	¬«      5 }t        j                  |«      }d d d «       j                  |«      sJ ‚y # 1 sw Y   ŒyxY w# 1 sw Y   Œ)xY w)
Nr   r   zraw-fd.parquetÚO_BINARYr   i¶  rN   )ÚmodeÚrb)r   r   rP   ÚgetattrÚosrQ   ÚO_CREATÚO_WRONLYÚO_TRUNCÚOSFilerR   Úwrite_tableÚO_RDONLYÚ
read_tablerT   )r   r   ÚpathÚbinary_flagÚfdÚsinkÚsourceÚresults           r    Ú$test_parquet_read_write_table_raw_fdrn   ˆ   sê   € Ü�H‰H�cš9Ð%Ó&€EÜˆwÐ)Ñ)Ó*€DÜœ"˜j¨!Ó,€Kä	�‰�”r—z‘z¤B§K¡KÑ/´"·*±*Ñ<¸{ÑJØó
€Bä	�‰�2˜DÕ	! TÜ
�‰�u˜dÔ#÷ 
"ô 
�‰�”r—{‘{ [Ñ0Ó	1€BÜ	�‰�2˜DÕ	! VÜ—‘˜vÓ&ˆ÷ 
"ð �=‰=˜ÔÐÑ÷ 
"Ð	!ú÷ 
"Ð	!ús   ÂD)Ã7D5Ä)D2Ä5D>c                 óH  — t        d¬«      }t        j                  j                  |«      }t	        |ddid¬«       t        | dz  «      }t        |d«      5 }t        ||d¬	«       d d d «       t        j                  |d
¬«      }|j                  |«      sJ ‚y # 1 sw Y   Œ4xY w)Nr2   r<   Úbuffer_sizei  r>   rK   rM   rN   r   i   )rp   rO   rU   s         r    Útest_enable_buffered_streamrq   ™   s�   € ä	˜bÔ	!€Bä�H‰H× Ñ  Ó$€EÜ�U¨}¸dÐ.CØ"õ$ô �7˜ZÑ'Ó(€HÜ	ˆh˜Ô	 Ü�U˜A uÕ-÷ 
ä—‘ °dÔ;€JØ×Ñ˜UÔ#Ð#Ñ#÷ 
Ð	úrZ   c                 ó>  — t         j                  j                  t        j                  dg«      gdg«      }d}| |z  }|j	                  «       rJ ‚t        |t        |«      «       |j	                  «       sJ ‚t        t        |«      «      }|j                  |«      sJ ‚y )Né*   Úintsz	foo # bar)	r   r(   r)   r'   Úexistsr   rP   r   rT   )r   r   rV   rh   rX   s        r    Útest_special_chars_filenamerv   ¨   sƒ   € Ü�H‰H× Ñ ¤"§(¡(¨B¨4£.Ð!1°F°8Ó<€EØ€HØ�XÑ€DØ�{‰{Œ}ÐÐÜ�œ˜D›	Ô"Ø�;‰;Œ=Ðˆ=ÜœS ›YÓ'€JØ×Ñ˜UÔ#Ð#Ñ#r/   c                  ó  — t        j                  t        d¬«      5  t        j                  d «       d d d «       t        j                  t        d¬«      5  t        j
                  d «       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   y xY w)NÚNoner   )r   r   r9   rR   rg   ÚParquetFile© r/   r    Útest_invalid_sourcer{   ³   sY   € ô 
�‰”y¨Ö	/Ü
�‰�dÔ÷ 
0ô 
�‰”y¨Ö	/Ü
�‰�tÔ÷ 
0Ð	/÷ 
0Ð	/ú÷ 
0Ð	/ús   œA4ÁB Á4A=Â B	c                 óP  — ddl m}  G d„ d«      }| dz  }t        j                  dg d¢i«      }t	        ||«       |j                  d|¬	«      5  t        j                  t        d
¬«      5  t        j                  |dg¬«       d d d «       t        j                  t        d¬«      5  t        j                  |ddg¬«       d d d «       t        j                  t        d¬«      5  t        j                  ||j                  ¬«       d d d «       t        j                  t        d¬«      5  t        j                  | «       d d d «       t        j                  |«      }||k(  sJ ‚	 d d d «       y # 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   ŒSxY w# 1 sw Y   y xY w)Nr   )Úmockc                   ó   — e Zd Zd„ Zy)ú;test_read_table_without_dataset.<locals>.MockParquetDatasetc                 ó   — t        d«      ‚)NÚMockParquetDataset)ÚImportError)ÚselfÚargsÚkwargss      r    Ú__init__zDtest_read_table_without_dataset.<locals>.MockParquetDataset.__init__Á   s   € ÜÐ2Ó3Ð3r/   N)Ú__name__Ú
__module__Ú__qualname__r†   rz   r/   r    r�   r   À   s   „ ó	4r/   r�   útest.parquetr   r   z#pyarrow.parquet.core.ParquetDataset)Únewzthe 'filters' keywordr   )ÚintegerÚ=r   )Úfilterszthe 'partitioning' keywordÚweekÚcolor)Úpartitioningzthe 'schema' argument©Úschemaúthe 'source' argument)Úunittestr}   r   r   r   Úpatchr   r   r   rR   rg   r“   )r   r}   r�   rh   r   rm   s         r    Útest_read_table_without_datasetr—   ½   s*  € Ý÷4ñ 4ð �^Ñ#€DÜ�H‰H�cš9Ð%Ó&€EÜ�˜Ôà	�‰Ð9Ð?QˆÕ	RÜ�]‰]œ:Ð-DÖEÜ�M‰M˜$Ð)<Ð(=Õ>÷ Fä�]‰]œ:Ð-IÖJÜ�M‰M˜$¨f°gÐ->Õ?÷ Kä�]‰]œ:Ð-DÖEÜ�M‰M˜$ u§|¡|Õ4÷ Fä�]‰]œ:Ð-DÖEÜ�M‰M˜'Ô"÷ Fä—‘˜tÓ$ˆØ˜ŠÐ‰÷ 
SÐ	RßEÐEúçJÐJúçEÐEúçEÐEú÷ 
SÐ	Rúsl   ÁFÁ*E,Â#FÂ&E8Ã #FÃ#"FÄ#FÄ(FÄ>$FÅ,E5	Å1FÅ8F	Å=FÆF	Æ	FÆF	ÆFÆF%c                  ót   — t        j                  t        t        d«      «      gdg¬«      } t	        | d¬«       y )Ni@œ  r#   r$   r   )Úrow_group_size)r   r   ÚlistÚranger   )r+   s    r    Ú(test_file_with_over_int16_max_row_groupsrœ   Õ   s,   € ô 	�‰”$”u˜U“|Ó$Ð%¨d¨VÔ4€AÜ�Q qÖ)r/   c                  óZ  — t        d¬«      } t        j                  j                  | «      }t        j                  j	                  |j                  «       D �cg c]  }|j                  d«      d d ‘Œ c}|j                  j                  ¬«      }|j                  j                  d«      j                  t        j                  «       k(  sJ ‚|j                  j                  d«      j                  t        j                  t        j                  «       «      k(  sJ ‚t        |d¬«       y c c}w )	Nr2   r<   r   r$   ÚnullÚ	null_listr>   r   )r   r   r(   rA   r)   ÚitercolumnsÚchunkr“   r%   ÚfieldÚtyperž   Úlist_r   )rF   r   Úcols      r    Útest_empty_table_roundtripr¦   à   sã   € ä	˜bÔ	!€Bô �H‰H× Ñ  Ó$€EÜ�H‰H× Ñ Ø%*×%6Ñ%6Ô%8Ó9Ñ%8˜cˆ�‰�1‹�b�qÒ	Ð%8Ñ9Ø�l‰l× Ñ ð !ó "€Eð �<‰<×Ñ˜fÓ%×*Ñ*¬b¯g©g«iÒ7Ð7Ð7Ø�<‰<×Ñ˜kÓ*×/Ñ/´2·8±8¼B¿G¹G»IÓ3FÒFÐFÐFÜØ�uöùò 	:s   ÁD(c                  ó„   — t        j                  «       } t        j                  j	                  | d¬«      }t        |«       y )NF)Úpreserve_index)ÚpdÚ	DataFramer   r(   rA   r   )rF   Úemptys     r    Útest_empty_table_no_columnsr¬   ð   s.   € ä	�‰‹€BÜ�H‰H× Ñ  °EÐ Ó:€EÜ�UÕr/   c            	      óH  — t        t        j                  «       t        j                  t        j                  «       «      ¬«      } g t        dd¬«      gg}|D �cg c]:  }t        j
                  |t        j                  | «      ¬«      j                  «       ‘Œ< }}|D �cg c]6  }t        j                  j                  |t        j                  | «      ¬«      ‘Œ8 }}t        j                  j                  |t        j                  | «      «      }t        |«       y c c}w c c}w )N)Úint32Úlist_stringr   )ÚG©r£   r’   )r   r   r®   r¤   Ústringr'   ÚstructÚflattenr@   r)   r“   r(   rC   r   )ÚcolsÚdatarE   Ú	my_arraysÚ
my_batchesÚtbls         r    Ú1test_write_nested_zero_length_array_chunk_failurerº   ÷   sé   € äÜ�h‰h‹jÜ—H‘HœRŸY™Y›[Ó)ô€Dð ” 1°&Ô9Ð<Ð=€Dñ #ó$Ù"�Uô —‘˜%¤b§i¡i°£oÔ6×>Ñ>Õ@Ø"ð ð $ñ  )ó*Ù(�eô —.‘.×,Ñ,¨U¼2¿9¹9ÀT»?Ð,ÕKØ(ð ð *ä
�(‰(×
Ñ
 
¬B¯I©I°d«OÓ
<€CÜ�SÕùò$ùò*s   Á?DÂ;Dc                 ó  — | dz  }t        j                  dt        j                  dt        j                  ¬«      i«      }t        ||«       t        |«      }|j                  «       }t        j                  ||«       t        | «      dz   }t        j                  dt        j                  dt        j                  ¬«      i«      }t        ||«       t        |«      }|j                  «       }t        j                  ||«       y )Nzzzz.parquetÚxr2   ©Údtype)r©   rª   ÚnpÚarangeÚint64r   r   Ú	to_pandasÚtmÚassert_frame_equalrP   )r   rh   rF   rX   Údf_reads        r    Útest_multiple_path_typesrÆ     sÆ   € ð �]Ñ"€DÜ	�‰�sœBŸI™I b´·±Ô9Ð:Ó	;€BÜ��TÔÜ˜TÓ"€JØ×"Ñ"Ó$€GÜ×Ñ˜"˜gÔ&ô ˆw‹<˜-Ñ'€DÜ	�‰�sœBŸI™I b´·±Ô9Ð:Ó	;€BÜ��TÔÜ˜TÓ"€JØ×"Ñ"Ó$€GÜ×Ñ˜"˜gÕ&r/   c                 óX  — | dz  }t        j                  dg d¢i«      }t        ||«       t        j                  |«      }t        |«      }|j                  |«      sJ ‚t        j                  t        «      5  t        |t        j                  «       ¬«       d d d «       y # 1 sw Y   y xY w)NrŠ   r   r   ©Ú
filesystem)r   r   r   r   ÚFSProtocolClassr   rT   r   r   r9   r   Ú
FileSystem)r   rh   r   Úfs_protocol_objrm   s        r    Útest_fspathrÍ   &  s   € à�^Ñ#€DÜ�H‰H�cš9Ð%Ó&€EÜ�˜Ôä×*Ñ*¨4Ó0€Oä˜Ó)€FØ�=‰=˜ÔÐÐô 
�‰”yÕ	!Ü�O´·±³Õ@÷ 
"×	!Ñ	!ús   Á7 B Â B)rÉ   Úname)údata.parquetu   ä¾‹.parquetc                 ó>  — t        j                  dg d¢i«      }| |z  }t        j                  |t	        |«      «       t        j                  | «      5  t        j                  ||¬«      }d d d «       j                  |«      sJ ‚|j                  «        |j                  «       rJ ‚t        j                  | «      5  t        j                  |||¬«       d d d «       t        j                  |«      }|j                  |«      sJ ‚y # 1 sw Y   Œ�xY w# 1 sw Y   Œ>xY w)Nr   r   rÈ   )r   r   rR   re   rP   r   Ú
change_cwdrg   rT   Úunlinkru   )r   rÉ   rÎ   r   rh   rm   s         r    Útest_relative_pathsrÓ   6  sÔ   € ô �H‰H�cš9Ð%Ó&€EØ�T‰>€Dô ‡N�N�5œ#˜d›)Ô$Ü	�‰˜Õ	!Ü—‘˜t°
Ô;ˆ÷ 
"à�=‰=˜ÔÐÐà‡K�K„MØ�{‰{Œ}ÐÐô 
�‰˜Õ	!Ü
�‰�u˜d¨zÕ:÷ 
"ä�]‰]˜4Ó €FØ�=‰=˜ÔÐÑ÷ 
"Ð	!ú÷ 
"Ð	!ús   ÁDÂ=DÄDÄDc                  óŠ   — t        j                  t        «      5  t        j                  d«       d d d «       y # 1 sw Y   y xY w)Nzi-am-not-existing.parquet)r   r   ÚFileNotFoundErrorrR   rg   rz   r/   r    Útest_read_non_existing_filerÖ   O  s(   € ä	�‰Ô(Õ	)Ü
�‰Ð1Ô2÷ 
*×	)Ñ	)ús	   š9¹Ac                  óÌ   —  G d„ dt         j                  «      } t        j                  t        d¬«      5  t        j                   | d«      «       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — e Zd Zd„ Zd„ Zy)ú3test_file_error_python_exception.<locals>.BogusFilec                 ó   — t        d«      ‚©NÚzorglub©ÚZeroDivisionError©rƒ   r„   s     r    Úreadz8test_file_error_python_exception.<locals>.BogusFile.readW  ó   € Ü# IÓ.Ð.r/   c                 ó   — t        d«      ‚rÛ   rÝ   rß   s     r    Úseekz8test_file_error_python_exception.<locals>.BogusFile.seekZ  rá   r/   N)r‡   rˆ   r‰   rà   rã   rz   r/   r    Ú	BogusFilerÙ   V  s   „ ò	/ó	/r/   rä   rÜ   r   r/   )ÚioÚBytesIOr   r   rÞ   rR   rg   )rä   s    r    Ú test_file_error_python_exceptionrç   U  s?   € ô/”B—J‘Jô /ô 
�‰Ô(°	Ö	:Ü
�‰‘i “nÔ%÷ 
;×	:Ñ	:ús   µAÁA#c                 óô  — t        j                  dg d¢i«      }t        j                  |t	        | dz  «      «       t        t	        | dz  «      d«      5 }t        j                  |«      }d d d «       j                  |«      sJ ‚t        t	        | dz  «      d«      5 }t        j                  t        j                  |«      «      }d d d «       |j                  |«      sJ ‚y # 1 sw Y   ŒyxY w# 1 sw Y   Œ)xY w)Nr   r   rÏ   r^   )	r   r   rR   re   rP   rQ   rg   rT   Ú
PythonFile)r   r   rW   rm   s       r    Útest_parquet_read_from_bufferrê   b  s¾   € ä�H‰H�cš9Ð%Ó&€EÜ‡N�N�5œ#˜g¨Ñ6Ó7Ô8ä	Œc�'˜NÑ*Ó+¨TÔ	2°aÜ—‘˜qÓ!ˆ÷ 
3à�=‰=˜ÔÐÐä	Œc�'˜NÑ*Ó+¨TÔ	2°aÜ—‘œrŸ}™}¨QÓ/Ó0ˆ÷ 
3à�=‰=˜ÔÐÑ÷ 
3Ð	2ú÷ 
3Ð	2ús   ÁC"Â)C.Ã"C+Ã.C7c            
      óþ  — t        j                  t        t        t        t        d«      «      «      «      } t        j                  t        t        t        t        d«      «      «      «      }t        j                  ddgdz  «      }| | g}t         j                  j                  |ddg¬«      }t        ||ddd¬	«       t        ||ddgdg¬	«       t        ||dddgddg¬	«       t         j                  j                  | | ||gg d
¢¬«      }t        ||ddgddg¬«       t         j                  j                  |gdg¬«      }t        j                  t        d¬«      5  t        ||dd¬«       d d d «       y # 1 sw Y   y xY w)Nr1   TFé2   r   Úbr$   Úgzip)ÚexpectedÚcompressionr?   Úuse_byte_stream_split©r   rí   ÚcÚdrô   ró   )rï   r?   rñ   ÚtmpúBYTE_STREAM_SPLIT only supportsr   )rï   rñ   r?   )r   r'   rš   ÚmapÚfloatr›   Úintr(   r)   r   r   r   ÚIOError)Ú	arr_floatÚarr_intÚarr_boolÚ
data_floatr   Úmixed_tables         r    Útest_byte_stream_splitr   p  sZ  € ä—‘œœc¤%¬¨s«Ó4Ó5Ó6€IÜ�h‰h”tœC¤¤U¨3£ZÓ0Ó1Ó2€GÜ�x‰x˜˜u˜¨Ñ*Ó+€HØ˜YÐ'€JÜ�H‰H× Ñ  °C¸°:Ð Ó>€Eô �U U¸Ø$)ÀõGô
 �U U¸Ø%( EØ,/¨5õ2ô
 �U U¸Ø%(¨# JØ,/°¨:õ7ô
 —(‘(×&Ñ&¨	°9¸gÀwÐ'OÚ-Að 'ó C€Kä�[¨;Ø%(¨# JØ,/°¨:õ7ô �H‰H× Ñ  ( °E°7Ð Ó;€EÜ	�‰”wÐ&GÖ	HÜ˜¨ÀdØ(-õ	/÷ 
I×	HÑ	Hús   ÅE3Å3E<c           
      óL  — t        j                  t        t        t        t        d«      «      «      t        j                  dd«      ¬«      }t        j                  t        t        t        t        d«      «      «      t        j                  dd«      ¬«      }t        j                  t        t        t        t        d«      «      «      t        j                  dd«      ¬«      }t        j                  dd	gd
z  «      }|||g}t         j                  j                  |g d¢¬«      }t        ||dd	d¬«       t        j                  j                  | d«      }t        j                  ||dd	d¬«       t        j                  |«      }|j                   j#                  d«      }	|j                   j#                  d«      }
|	j$                  dk(  sJ ‚|
j$                  dk(  sJ ‚t        ||dd	ddddœ¬«       t         j                  j                  ||||gg d¢¬«      }t        ||d	d¬«       y )Nr1   é   r   r±   é   é	   é   TFrì   ©r   rí   ró   r$   rî   )rï   rð   r?   Ústore_decimal_as_integerrŠ   )rð   r?   r  r   r   ÚINT32ÚINT64ÚDELTA_BINARY_PACKED©r   rí   )rï   rð   r?   r  Úcolumn_encodingrò   )rï   r?   r  )r   r'   rš   r÷   r   r›   Ú
decimal128r(   r)   r   r`   rh   ÚjoinrR   re   ry   r“   ÚcolumnÚphysical_type)r   Úarr_decimal_1_9Úarr_decimal_10_18Úarr_decimal_gt18rý   Údata_decimalr   Úpqtestfile_pathÚ
pqtestfileÚpqcol_decimal_1_9Úpqcol_decimal_10_18rÿ   s               r    Útest_store_decimal_as_integerr  –  sÝ  € Ü—h‘hœt¤C¬´°s³Ó$<Ó=Ü$&§M¡M°!°QÓ$7ô9€OäŸ™¤¤c¬'´5¸³:Ó&>Ó!?Ü&(§m¡m°B¸Ó&:ô<Ðä—x‘x¤¤S¬´%¸³*Ó%=Ó >Ü%'§]¡]°2°qÓ%9ô;Ðä�x‰x˜˜u˜¨Ñ*Ó+€HØ#Ð%6Ð8HÐI€LÜ�H‰H× Ñ  ²_Ð ÓE€Eô �UØ#Ø!'Ø$)Ø.2õ	4ô —g‘g—l‘l 7¨NÓ;€OÜ‡N�N�5˜/Ø%Ø"'Ø,0õ2ô
 —‘ Ó0€JØ"×)Ñ)×0Ñ0°Ó3ÐØ$×+Ñ+×2Ñ2°1Ó5Ðà×*Ñ*¨gÒ5Ð5Ð5Ø×,Ñ,°Ò7Ð7Ð7ô �UØ#Ø!'Ø$)Ø.2à3Ø3ñ&õô —(‘(×&Ñ&Ø	Ð+Ð-=¸xÐHÚ"ð 'ó $€Kô �[Ø)Ø$)Ø.2ö4r/   c                  ó&  — t        j                  t        t        t        t        d«      «      «      «      } t        j                  t        t        t        t        d«      «      «      «      }t        j                  t        d«      D �cg c]  }t        |«      ‘Œ c}t        j                  «       ¬«      }t        j                  t        d«      D �cg c]  }t        |«      j                  d«      ‘Œ c}t        j                  d«      ¬«      }t        j                  g d¢dz  «      }t         j                  j                  | ||||gg d¢¬«      }t        ||dd	d	d
d	dœ¬«       t        ||dd
¬«       t        ||dd
dd
dœ¬«       t        ||dd
dddœ¬«       t        ||dd
ddddœ¬«       t        ||dddi¬«       t        j                  t        d¬«      5  t        ||dd
d
d	dœ¬«       d d d «       t        j                  t         d¬«      5  t        ||ddd
d
dœ¬«       d d d «       t        j                  t"        d¬«      5  t        ||dd¬«       d d d «       t        j                  t"        d¬«      5  t        ||dddi¬«       d d d «       t        j                  t"        «      5  t        ||dgdd
i¬«       d d d «       t        j                  t"        «      5  t        ||dd
i¬«       d d d «       t        j                  t"        «      5  t        ||ddgdd	d
dœ¬«       d d d «       t        j                  t"        «      5  t        ||dddd	d
dœ¬«       d d d «       t        j                  t$        «      5  t        ||dd¬«       d d d «       y c c}w c c}w # 1 sw Y   �Œ¸xY w# 1 sw Y   �ŒŽxY w# 1 sw Y   �Œhx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   ŒÈxY w# 1 sw Y   ŒžxY w# 1 sw Y   y xY w) Nr1   r±   r2   )FTFFé   )r   rí   ró   rô   Úer$   FÚBYTE_STREAM_SPLITÚPLAINrò   )rï   r?   r  r
  r  ÚDELTA_LENGTH_BYTE_ARRAYÚDELTA_BYTE_ARRAYr  ÚRLErö   r   )r   ró   r  z)DELTA_BINARY_PACKED encoder only supportsz+'RLE_DICTIONARY' is already used by defaultÚRLE_DICTIONARYz/Unsupported column encoding: 'MADE_UP_ENCODING'r   ÚMADE_UP_ENCODINGrí   )rï   r  )rï   r?   rñ   r  T)r   r'   rš   r÷   rø   r›   rù   rP   ÚbinaryÚzfillr(   r)   r   r   r   rú   ÚOSErrorr   r9   )rû   rü   r¼   Úarr_binÚarr_flbarý   rÿ   s          r    Útest_column_encodingr)  Ì  s²  € Ü—‘œœc¤%¬¨s«Ó4Ó5Ó6€IÜ�h‰h”tœC¤¤U¨3£ZÓ0Ó1Ó2€GÜ�h‰h¬¨c¬
Ó3©
 1œ˜A�¨
Ñ3¼"¿)¹)»+ÔF€GÜ�x‰xÜ#(¨¤:Ó.¡:˜aŒˆQ‹�‰�bÕ	 :Ñ.´R·Y±Y¸r³]ôD€Hä�x‰xÒ3°bÑ8Ó9€HÜ—(‘(×&Ñ&Ø	�G˜W h°Ð9Ú'ð 'ó )€Kô �[¨;ÀuØ+>Ø+>Ø+2Ø+>ñ&@õAô �[¨;Ø$)Ø%,õ.ô
 �[¨;Ø$)Ø+2Ø+@Ø+2ñ&4õ5ô �[¨;Ø$)Ø+2Ø+@Ø+Dñ&FõGô �[¨;Ø$)Ø+2Ø+@Ø+=Ø+=ñ&?õ@ô �[¨;Ø$)Ø&)¨5 \õ3ô 
�‰”wØ>ö
@ä˜¨{Ø(-Ø/6Ø/6Ø/Bñ*Dõ	E÷
@ô 
�‰”wØHö
Jä˜¨{Ø(-Ø/DØ/6Ø/6ñ*8õ	9÷
Jô 
�‰”zØJö
Lä˜¨{Ø(-Ø)9õ	;÷
Lô 
�‰”zØNö
Pä˜¨{Ø(-Ø*-Ð/AÐ)Bõ	D÷
Pô 
�‰”zÕ	"Ü˜¨{Ø),¨Ø*-¨w¨õ	9÷ 
#ô 
�‰”zÕ	"Ü˜¨{Ø*-¨w¨õ	9÷ 
#ô 
�‰”zÕ	"Ü˜¨{Ø(-Ø03¨uØ/4Ø/BØ/6ñ*8õ	9÷ 
#ô 
�‰”zÕ	"Ü˜¨{Ø(-Ø/3Ø/4Ø/BØ/6ñ*8õ	9÷ 
#ô 
�‰”yÕ	!Ü˜¨{Ø(-Ø)-õ	/÷ 
"Ð	!ùòo 4ùâ.÷`
@ñ 
@ú÷
Jñ 
Jú÷
Lñ 
Lú÷
Pñ 
Pú÷ 
#Ñ	"ú÷ 
#Ð	"ú÷ 
#Ð	"ú÷ 
#Ð	"ú÷ 
"Ð	!úsx   ÂNÃ!NÇN"ÈN/ÉN<É9O	Ê,OË O#ÌO/Í	O;Í?PÎ"N,Î/N9Î<OÏ	OÏO Ï#O,Ï/O8Ï;PÐPc            
      óD  — t        j                  t        t        t        t        d«      «      «      «      } | | g}t         j                  j                  |ddg¬«      }t        ||dd¬«       t        ||dd¬«       t        ||dd	d
œ¬«       t        ||dddd
œ¬«       t        ||dd¬«       t        ||dd¬«       g d¢}t        j                  «       }|D ]<  \  }}t        j                  t        t        f«      5  t        ||||¬«       d d d «       Œ> y # 1 sw Y   ŒIxY w)Néè  r   rí   r$   rî   r   )rï   rð   Úcompression_levelr  Úsnappyr  ©rï   rð   r   r   Úlz4r  ))r-  é   )rî   iÇúÿÿ)rx   i¼  )Úlzoé   )rð   r,  )r   r'   rš   r÷   rù   r›   r(   r)   r   rå   ræ   r   r   r   r&  r   )r*   r¶   r   Úinvalid_combinationsÚbufÚcodecÚlevels          r    Útest_compression_levelr7  L  s  € Ü
�(‰(”4œœC¤ t£Ó-Ó.Ó
/€CØ�ˆ:€DÜ�H‰H× Ñ  ¨c°3¨ZÐ Ó8€Eô �U U¸Ø'(õ*ô
 �U U¸Ø'(õ*ô �U UØ'-°HÑ!=õ?ô �U U¸Ø-.°QÑ'7õ9ô
 �U U¸Ø'(õ*ô �U U¸Ø'(õ*ò8Ðä
�*‰*‹,€CÛ.‰ˆ�Ü�]‰]œJ¬Ð0Õ1Ü˜ °Ø+0õ2÷ 2Ð1ñ /ß1Ð1ús   Ã;DÄD	c            
      óð   — t        j                  t        t        t        t        d«      «      «      «      } t         j                  j                  | | gddg¬«      }t        ||d¬«       t        ||d¬«       y )Nr+  r   rí   r$   Úlz4_rawr.  ÚLZ4_RAW)	r   r'   rš   r÷   rù   r›   r(   r)   r   )r*   r   s     r    Útest_lz4_raw_compression_aliasr;  y  sY   € ä
�(‰(”4œœC¤ t£Ó-Ó.Ó
/€CÜ�H‰H× Ñ  # s °C¸°:Ð Ó>€EÜ�U U¸	ÕBÜ�U U¸	ÖBr/   c            
      óô  — t        j                  t        t        t        t        d«      «      «      «      } t        j                  t        d«      D �cg c]  }t        |«      ‘Œ c}t        j                  «       ¬«      }| |g}t         j                  j                  |ddg¬«      }t        ||ddddœi¬«       t        ||dddœd	d
dœdœ¬«       t        ||dddii¬«       t        ||dddii¬«       t        ||di i¬«       t        ||ddi¬«       t        ||ddi¬«       t        j                  «       }d}t        j                  t        |¬«      5  t!        ||ddddœi¬«       d d d «       d}t        j                  t        |¬«      5  t!        ||ddddœi¬«       d d d «       t        j                  t        d¬«      5  t!        ||d¬«       d d d «       d}t        j                  t"        |¬«      5  t!        ||dddii¬«       d d d «       d}t        j                  t"        t%        j&                  |«      ¬«      5  t!        ||dddii¬«       d d d «       d}t        j                  t"        t%        j&                  |«      ¬«      5  t!        ||dddii¬«       d d d «       y c c}w # 1 sw Y   �ŒIx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   ŒŒxY w# 1 sw Y   y xY w)Nr1   r±   r   rí   r$   gš™™™™™©?)ÚndvÚfpp)rï   Úbloom_filter_optionsr2   çš™™™™™¹?r  r>  r=  TFz8'bloom_filter_options:ndv' for column 'a' must be an intr   Ú100)r?  z9'bloom_filter_options:fpp' for column 'a' must be a floatz0.05z+'bloom_filter_options' must be a dictionaryzL'bloom_filter_options:ndv' for column 'a' must be greater than zero, got -10iöÿÿÿzH'bloom_filter_options:fpp' for column 'a' must be in (0.0, 1.0), got 2.0g       @zI'bloom_filter_options:fpp' for column 'a' must be in (0.0, 1.0), got -0.5g      à¿)r   r'   rš   r÷   rù   r›   rP   r$  r(   r)   r   rå   ræ   r   r   r9   r   r   ÚreÚescape)rü   r¼   r'  r¶   r   r4  Úexpects          r    Útest_bloom_filter_optionsrE  �  sÈ  € Ü�h‰h”tœC¤¤U¨3£ZÓ0Ó1Ó2€GÜ�h‰h¬¨c¬
Ó3©
 1œ˜A�¨
Ñ3¼"¿)¹)»+ÔF€GØ�WÐ€DÜ�H‰H× Ñ  ¨c°3¨ZÐ Ó8€Eô �U UØ #¨dÑ3ðB5õ 6ô �U UØ"%¨dÑ3À"ÈSÑ:QñBSõ Tô �U UØ˜5 $˜-ðB)õ *ô �U UØ˜5 #˜,ðB(õ )ô �U UØ˜"ðBõ ä�U UØ˜$ðB õ !ô �U UØ˜%ðB!õ "ô �*‰*‹,€CØG€FÜ	�‰”y¨Ö	/Ü�U˜CØ %°Ñ5ð77õ 	8÷ 
0ð
 I€FÜ	�‰”y¨Ö	/Ü�U˜CØ #¨fÑ5ð77õ 	8÷ 
0ô
 
�‰”yÐ(UÖ	VÜ�U˜C°dÕ;÷ 
Wð
 	Wð ä	�‰”z¨Ö	0Ü�U˜CØ˜5 #˜,ð7(õ 	)÷ 
1ð
 X€FÜ	�‰”z¬¯©°6Ó):Ö	;Ü�U˜CØ˜5 #˜,ð7(õ 	)÷ 
<ð Y€FÜ	�‰”z¬¯©°6Ó):Ö	;Ü�U˜CØ˜5 $˜-ð7)õ 	*÷ 
<Ð	;ùòy 4÷B 
0Ñ	/ú÷ 
0Ñ	/ú÷
 
WÐ	Vú÷ 
1Ð	0ú÷ 
<Ð	;ú÷ 
<Ð	;úsN   ÁJ+ÅJ0ÆJ=ÇK
Ç9KÉK"ÊK.Ê0J:Ê=KË
KËKË"K+Ë.K7c                  óØ   — t        j                  g d¢«      } d}t         j                  j                  | g|g«      }t	        |ddi¬«      }d}|j
                  d   j                  |k(  sJ ‚y )N)r   r   r   r   r0  zprohib; ,	{}ÚflavorÚspark)Úwrite_table_kwargsÚprohib______r   )r   r'   r(   r)   r	   r“   rÎ   )Úa0rÎ   r   rm   Úexpected_names        r    Ú test_sanitized_spark_field_namesrM  Ä  sb   € Ü	�‰’/Ó	"€BØ€DÜ�H‰H× Ñ  " ¨ vÓ.€Eä˜e¸À7Ð8KÔL€Fà"€MØ�=‰=˜Ñ× Ñ  MÒ1Ð1Ñ1r/   c                  ó>  — t        d¬«      } t        j                  j                  | «      }t	        j
                  «       }t        ||dd¬«       |j                  d«       t        |d¬«      }|j                  d«       t        |d	¬«      }|j                  |«      sJ ‚y )
Ni'  r<   ÚSNAPPYr>   )rð   r   r   T)Úuse_threadsF)
r   r   r(   rA   rå   ræ   r   rã   r   rT   )rF   r   r4  Útable1Útable2s        r    Útest_multithreaded_readrS  Ï  sy   € ä	˜eÔ	$€Bä�H‰H× Ñ  Ó$€Eä
�*‰*‹,€CÜ�˜¨¸5ÕAà‡H�HˆQ„KÜ˜¨$Ô/€Fà‡H�HˆQ„KÜ˜¨%Ô0€Fà�=‰=˜Ô Ð Ñ r/   c                  óÒ  — t        j                  t        j                  d«      gg d¢¬«      } t        j
                  j                  | j                  «       «      }t        j                  «       }t        ||d¬«       |j                  d«       t        |«      }|j                  |«      sJ ‚t        j                  t         «      5  t        ||d¬«       d d d «       y # 1 sw Y   y xY w)Nr0  )ÚAÚBÚCÚD)Úcolumnséÿÿÿÿ)Ú
chunk_sizer   )r©   rª   r¿   rÀ   r   r(   rA   Úreset_indexrå   ræ   r   rã   r   rT   r   r   r   )r¶   r   r4  rm   s       r    Útest_min_chunksizer]  á  sœ   € ä�<‰<œŸ™ 1›˜Ò0DÔE€DÜ�H‰H× Ñ  ×!1Ñ!1Ó!3Ó4€Eä
�*‰*‹,€CÜ�˜¨Õ+à‡H�HˆQ„KÜ˜Ó€Fà�=‰=˜ÔÐÐä	�‰”zÕ	"Ü�U˜C¨AÕ.÷ 
#×	"Ñ	"ús   ÃCÃC&c                 óf  — t        j                  t        d«      t        t        dd«      «      t	        j
                  dd«      j                  d«      t	        j
                  ddd	¬
«      g d¢t        j                  t        d«      «      t        j                  dd¬«      t        j                  ddd¬«      t        j                  ddd¬«      dœ	«      }t        j                  j                  |«      }| dz  }	 t        ||d¬«       |j                  «       rJ ‚y # t        j                  $ r Y Œ(w xY w)NÚabcr   r0  r   é   Úu1ç      @ç      @Úfloat64r½   ©TFTÚ20130101©Úperiodsz
US/Eastern)rh  ÚtzÚns)rh  Úfreq)	r   rí   ró   rô   r  rW   ÚgÚhÚirM   r3   r   )r©   rª   rš   r›   r¿   rÀ   ÚastypeÚCategoricalÚ
date_ranger   r(   rA   r   ÚArrowExceptionru   )r   rF   ÚpdfrV   s       r    Ú(test_write_error_deletes_incomplete_filert  ò  sû   € ô 
�‰œD ›KÜ ¤ q¨!£Ó-ÜŸI™I a¨›O×2Ñ2°4Ó8ÜŸI™I c¨3°iÔ@Ú/ÜŸN™N¬4°«;Ó7ÜŸM™M¨*¸aÔ@ÜŸM™M¨*¸aØ-9ô;äŸM™M¨*¸aÀdÔKñ	Mó 	
N€Bô �(‰(×
Ñ
˜rÓ
"€Cà˜Ñ#€Hðô 	�S˜(¨EÕ2ð �‰Ô Ð Ð Ð øô ×Ñò Ùðús   Ã9D ÄD0Ä/D0c                 ó†   — d}	 t        j                  |«       y # t        $ r}||j                  d   v sJ ‚Y d }~y d }~ww xY w)Nznonexistent-file.parquetr   )rR   rg   Ú	Exceptionr„   )r   rh   r  s      r    Útest_read_non_existent_filerw    s>   € Ø%€Dð!Ü
�‰�dÕøÜò !Ø�q—v‘v˜a‘yÑ Ð Õ ûð!ús   „ š	A £;»A c                 ó²   — t        j                  «       5  t        j                  d¬«       t        j                  | dz  «       d d d «       y # 1 sw Y   y xY w)NÚerror)Úactionzv0.7.1.parquet)ÚwarningsÚcatch_warningsÚsimplefilterrR   rg   )Údatadirs    r    Útest_read_table_doesnt_warnr    s:   € Ü	×	 Ñ	 Õ	"Ü×Ñ WÕ-Ü
�‰�gÐ 0Ñ0Ô1÷ 
#×	"Ñ	"ús   •/AÁAc                  óz  — t         j                  j                  t        j                  ddg«      gdg«      } t	        j
                  «       }t        j                  | |d¬«       |j                  d«       t        j                  |«      }t        j                  |j                  «       | j                  «       «       y )Nr_  ÚdefÚsome_colrî   ©rð   r   )r   r(   r)   r'   rå   ræ   rR   re   rã   rg   rÃ   rÄ   rÂ   )r   rW   Ú	roundtrips      r    Útest_zlib_compression_bugr…    s€   € ô �H‰H× Ñ ¤"§(¡(¨E°5¨>Ó":Ð!;¸j¸\ÓJ€EÜ
�
‰
‹€AÜ‡N�N�5˜!¨Õ0à‡F�Fˆ1„IÜ—‘˜aÓ €IÜ×Ñ˜)×-Ñ-Ó/°·±Ó1BÕCr/   c                 ó  — t        | dz  «      }t        j                  t        j                  d¬«      5  t        |d«      5 }	 d d d «       t        j                  |«       d d d «       t        j                  t        j                  d¬«      5  t        |d«      5 }|j                  d«       d d d «       t        j                  |«       d d d «       y # 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)NrŠ   zsize is 0 bytesr   rN   zsize is 4 bytess   ffff)	rP   r   r   r   ÚArrowInvalidrQ   rR   rg   Úwrite)r   rh   rW   s      r    Útest_parquet_file_too_smallr‰  '  s·   € Üˆw˜Ñ'Ó(€DÜ	�‰”r—‘Ð.?Ö	@Ü�$˜Ô Ø÷ ä
�‰�dÔ÷ 
Aô
 
�‰”r—‘Ð.?Ö	@Ü�$˜Ô Ø�G‰G�GÔ÷ ä
�‰�dÔ÷ 
AÐ	@÷	 Ðú÷ 
AÐ	@ú÷ Ðú÷ 
AÐ	@úsG   ´CÁCÁCÂC6ÂC*Â,C6ÃC	ÃCÃC'Ã*C3	Ã/C6Ã6C?zignore:RangeIndex:FutureWarningz.ignore:tostring:DeprecationWarning:fastparquetz$ignore:unclosed file:ResourceWarningc                 ó6  — t        j                  d«      }t        j                  t	        d«      t	        t        dd«      «      t        j                  ddd¬«      g d	¢t        j                  d
d¬«      t        j                  g d¢«      dœ«      }t        j                  |«      }t        | dz  «      }t        j                  ||d ¬«       |j                  |«      }|j!                  «       }t#        j$                  ||j'                  dt(        i«      «       t        | dz  «      }|j+                  ||j'                  dt(        i«      «       t        j,                  |«      }t#        j$                  |j!                  «       |j'                  dt(        i«      «       y )NÚfastparquetr_  r   r0  rb  rc  rd  r½   re  rf  r   rg  )r   rí   r   )r   rí   ró   rô   r  rW   zcross_compat_arrow.parquetrƒ  r   z cross_compat_fastparquet.parquetrW   )r   Úimportorskipr©   rª   rš   r›   r¿   rÀ   rq  rp  r   r   rP   rR   re   ry   rÂ   rÃ   rÄ   ro  Úobjectrˆ  rS   )	r   ÚfprF   r   Ú
file_arrowÚfp_fileÚdf_fpÚfile_fastparquetÚtable_fps	            r    Ú$test_fastparquet_cross_compatibilityr”  4  s;  € ô 
×	Ñ	˜]Ó	+€Bä	�‰ä�e“Ü”e˜A˜q“kÓ"Ü—‘˜3 ¨9Ô5Ú$Ü—‘˜z°1Ô5Ü—‘¢Ó0ñ		
ó
€Bô �H‰H�R‹L€Eô �WÐ;Ñ;Ó<€JÜ‡N�N�5˜*°$Õ7à�n‰n˜ZÓ(€GØ×ÑÓ€Eô ×Ñ˜% §¡¨C´¨=Ó!9Ô:ô ˜7Ð%GÑGÓHÐà‡H�HÐ˜rŸy™y¨#¬v¨Ó7Ô8ä�~‰~Ð.Ó/€Hô ×Ñ˜(×,Ñ,Ó.°·	±	¸3Ä¸-Ó0HÕIr/   Úarray_factoryc                  ó6   — t        j                  dd gdz  «      S ©Nr   r2   ©r   r'   rz   r/   r    Ú<lambda>r™  `  s   € ŒB�H‰H�a˜�Y ‘^Ô$r/   c                  óR   — t        j                  dd gdz  «      j                  «       S r—  ©r   r'   Údictionary_encoderz   r/   r    r™  r™  a  s   € ŒB�H‰H�a˜�Y ‘^Ó$×6Ñ6Ô8r/   c                  ó6   — t        j                  dd gdz  «      S ©NÚ r2   r˜  rz   r/   r    r™  r™  b  s   € ŒB�H‰H�b˜$�Z "‘_Ô%r/   c                  óR   — t        j                  dd gdz  «      j                  «       S rž  r›  rz   r/   r    r™  r™  c  s   € ŒB�H‰H�b˜$�Z "‘_Ó%×7Ñ7Ô9r/   Úread_dictionaryFTc                 ó°  — t         j                  j                  d | «       i«      }t        j                  «       }t        j                  ||d¬«       |j                  d«       |rdgnd }t        j                  |d|¬«      }|j                  D ]E  }|j                  \  }|j                  «       d   }|j                  «       |j                  dz  k(  rŒEJ ‚ y )	Nr¥   T)r?   r   F)rP  r¡  r   ó    )r   r(   Úfrom_pydictrå   ræ   rR   re   rã   rg   rY  ÚchunksÚbuffersÚ
to_pybytesr=   )r•  r¡  Ú
orig_tableÚbior   r¥   r¡   r4  s           r    Útest_buffer_contentsrª  _  s®   € ô —‘×%Ñ% u©m«oÐ&>Ó?€JÜ
�*‰*‹,€CÜ‡N�N�:˜s°4Õ8Ø‡H�HˆQ„KÙ!0�u‘g°d€OÜ�M‰M˜#¨5Ø*9ô;€Eð �}Œ}ˆØ—*‘*‰ˆØ�m‰m‹o˜aÑ ˆØ�~‰~Ó 3§8¡8¨eÑ#3Ó3Ð3Ð3ñ r/   c                 óø   — t        j                  t        j                  t        d«      «      gdg¬«      }| dz  }t	        j
                  ||d¬«       t	        j                  |«      }|j                  |«      sJ ‚y )Nr0  rt   r$   zarrow-10480.pyarrow.gzÚGZIPrƒ  )r   r   r'   r›   rR   re   rg   rT   )r   r   rh   rm   s       r    Ú"test_parquet_compression_roundtripr­  z  sa   € ô
 �H‰H”b—h‘hœu Q›xÓ(Ð)°&°Ô:€EØÐ-Ñ-€DÜ‡N�N�5˜$¨FÕ3Ü�]‰]˜4Ó €FØ�=‰=˜ÔÐÑr/   c                 óò  — t         j                  j                  t        j                  g d¬«      gdg«      }| dz  }d}t	        j
                  ||j                  «      5 }t        |«      D ]  }|j                  |«       Œ 	 d d d «       t	        j                  |«      }|j                  j                  |k(  sJ ‚t        |«      D ]$  }|j                  |«      j                  |«      rŒ$J ‚ y # 1 sw Y   ŒlxY w)Nr®   r±   r#   zempty_row_groups.parquetr   )r   r(   r)   r'   rR   ÚParquetWriterr“   r›   re   ry   ÚmetadataÚnum_row_groupsÚread_row_grouprT   )r   r   rh   Ú
num_groupsÚwriterrn  Úreaders          r    Útest_empty_row_groupsr¶  †  sÏ   € ä�H‰H× Ñ ¤"§(¡(¨2°GÔ"<Ð!=À¸vÓF€EàÐ/Ñ/€Dà€JÜ	×	Ñ	˜$ §¡Ô	-°Ü�zÖ"ˆAØ×Ñ˜uÕ%ñ #÷ 
.ô �^‰^˜DÓ!€FØ�?‰?×)Ñ)¨ZÒ7Ð7Ð7ä�:ÖˆØ×$Ñ$ QÓ'×.Ñ.¨uÕ5Ð5Ð5ñ ÷ 
.Ð	-ús   Á"C-Ã-C6c                 óæ   — d gdz  }|j                  dg«       t        j                  j                  |gdg«      }| dz  }t	        j
                  ||«       t	        j                  |«      }||k(  sJ ‚y )Ni   r   r  zarrow-11607.parquet)rB   r   r(   r)   rR   re   rg   )r   r¶   r   rh   rR  s        r    Útest_reads_over_batchr¸  ˜  sk   € Øˆ6�WÑ€DØ‡K�K��Ôô �H‰H× Ñ  $ ¨(¨Ó4€EàÐ*Ñ*€DÜ‡N�N�5˜$ÔÜ�]‰]˜4Ó €FØ�FŠ?Ð‰?r/   c                 óš  — | dz  }|j                  d¬«       t        j                  g d¢g d¢gddg¬«      }t        j                  ||d	z  «       t        j                  g d
¢g d¢gddg¬«      }t        j                  ||dz  «       t        j
                  t        |«      «      }t        j                  g d¢g d¢gddg¬«      }||k(  sJ ‚y )NÚ dataset_column_order_permutationT)Úexist_okr   )r@  çš™™™™™É?ç333333Ó?r   rí   r$   zdata1.parquet)çš™™™™™Ù?ç      à?ç333333ã?)r0  r  r`  zdata2.parquet)r   r   r   r0  r  r`  )r@  r¼  r½  r¾  r¿  rÀ  )Úmkdirr   r   rR   re   rg   rP   )r   ÚcaseÚdata1Údata2r   rR  s         r    Ú test_permutation_of_column_orderrÅ  ¦  s³   € àÐ7Ñ7€DØ‡J�J˜€JÔä�H‰H’i¢Ð.°s¸C°jÔA€EÜ‡N�N�5˜$ Ñ0Ô1ä�H‰H’l¢IÐ.°s¸C°jÔA€EÜ‡N�N�5˜$ Ñ0Ô1ä�M‰Mœ#˜d›)Ó$€EÜ�X‰XÒ)Ú5ð7à  #˜Jô(€Fð �FŠ?Ð‰?r/   c                 óÞ  — | dz  }t        j                  t        t        d«      «      «      }d}t        j                  |g|z  t        |«      D �cg c]  }d|› �‘Œ	 c}¬«      }t        j                  ||«       t        j                  t        d¬«      5  t        j                  |d|z  ¬	«       d d d «       t        j                  t        d¬«      5  t        j                  ||¬
«       d d d «       t        j                  |d|z  ¬	«      }||k(  sJ ‚t        j                  |d|z  ¬
«      }||k(  sJ ‚t        j                  |«      }||k(  sJ ‚y c c}w # 1 sw Y   Œ¨xY w# 1 sw Y   ŒyxY w)Nzlargethrift.parquetr2   r+  Úsome_long_column_name_r$   z1Couldn't deserialize thrift:.*Exceeded size limitr   rì   )Úthrift_string_size_limit)Úthrift_container_size_limitr1   r   )r   r'   rš   r›   r   rR   re   r   r   r&  rg   )r   rh   r'   Únum_colsrn  r   Úgots          r    Útest_thrift_size_limitsrÌ  ¹  sC  € ØÐ*Ñ*€Dä�H‰H”Tœ% ›)“_Ó%€EØ€HÜ�H‰HØ	ˆ�(ÑÜ5:¸8´_ÓE±_°Ð'¨ sÒ+°_ÑEôG€Eô ‡N�N�5˜$Ôä	�‰ÜØEö
Gô 	�‰�d°R¸(±]ÕC÷
Gô 
�‰ÜØEö
Gô 	�‰�d¸ÕA÷
Gô
 �-‰-˜°s¸X±~Ô
F€CØ�%Š<Ðˆ<Ü
�-‰-˜¸!¸h¹,Ô
G€CØ�%Š<Ðˆ<Ü
�-‰-˜Ó
€CØ�%Š<Ð‰<ùò# F÷
Gð 
Gú÷
Gð 
Gús   ÁE
ÂEÃE#ÅE Å#E,c                 ó’  — | dz  }t        j                  dg d¢i«      }t        j                  ||d¬«       t        j                  |d¬«      }||k(  sJ ‚t        |j                  «       «      }|d   |d   k7  sJ ‚|d   |d   c|d<   |d<   | d	z  }|j                  |«       t        j                  |d
¬«      }||k7  sJ ‚|t        j                  dg d¢i«      k(  sJ ‚t        j                  t        d¬«      5  t        j                  |d¬«      }ddd«       t        j                  |d
¬«      }|j                  «       }	|	|k7  sJ ‚|	t        j                  dg d¢i«      k(  sJ ‚t        j                  |d¬«      }t        j                  t        d¬«      5  |j                  «       }ddd«       y# 1 sw Y   Œ¡xY w# 1 sw Y   yxY w)zUCheck that checksum verification works for datasets created with
    pq.write_table()zcorrect.parquetr   ©r   r   r   r0  T©Úwrite_page_checksum©Úpage_checksum_verificationé   é$   zcorrupted.parquetF©r   r   r   r0  úCRC checksum verificationr   N)r   r   rR   re   rg   Ú	bytearrayÚ
read_bytesÚwrite_bytesr   r   r&  ry   rà   )
r   Úoriginal_pathÚ
table_origÚtable_checkÚbin_dataÚcorrupted_pathÚtable_corruptrG   Úcorrupted_pq_fileÚtable_corrupt2s
             r    Ú+test_page_checksum_verification_write_tablerâ  Ô  sÁ  € ð
 Ð/Ñ/€MÜ—‘˜3¢Ð-Ó.€JÜ‡N�N�:˜}À$ÕGô —-‘- È$ÔO€KØ˜Ò$Ð$Ð$ô
 ˜×1Ñ1Ó3Ó4€Hð �B‰<˜8 B™<Ò'Ð'Ð'Ø!)¨"¡¨x¸©|Ð€HˆR�L�(˜2‘,ð Ð2Ñ2€NØ×Ñ˜xÔ(ô —M‘M .Ø=BôD€Mð ˜JÒ&Ð&Ð&ØœBŸH™H cª<Ð%8Ó9Ò9Ð9Ð9ô 
�‰”wÐ&AÖ	BÜ�M‰M˜.ÀTÔJˆ÷ 
Cô
 Ÿ™ ~ØBGôIÐà&×+Ñ+Ó-€NØ˜ZÒ'Ð'Ð'ØœRŸX™X sªLÐ&9Ó:Ò:Ð:Ð:ô Ÿ™ ~ØBFôHÐô 
�‰”wÐ&AÖ	BØ×"Ñ"Ó$ˆ÷ 
CÐ	B÷! 
CÐ	Bú÷  
CÐ	Bús   Ã9F1ÆF=Æ1F:Æ=Gc                 óÞ  — t        j                  dg d¢i«      }| dz  }t        j                  ||d¬«       t	        |j                  «       «      }t        |«      dk(  sJ ‚|d   }t        j                  |d¬«      }||k(  sJ ‚t        |j                  «       «      }|d	   |d
   k7  sJ ‚|d
   |d	   c|d	<   |d
<   | dz  }t        ||«       ||j                  z  }|j                  |«       t        j                  |d¬«      }	|	|k7  sJ ‚|	t        j                  dg d¢i«      k(  sJ ‚t        j                  t        d¬«      5  t        j                  |d¬«      }
ddd«       y# 1 sw Y   yxY w)zXCheck that checksum verification works for datasets created with
    pq.write_to_datasetr   rÎ  Úcorrect_dirTrÏ  r   r   rÑ  rÓ  rÔ  Úcorrupted_dirFrÕ  rÖ  r   N)r   r   rR   Úwrite_to_datasetrš   ÚiterdirÚlenrg   r×  rØ  r   rÎ   rÙ  r   r   r&  )r   rÛ  Úoriginal_dir_pathÚoriginal_file_path_listrÚ  rÜ  rÝ  Úcorrupted_dir_pathÚcorrupted_file_pathrß  rG   s              r    Útest_checksum_write_to_datasetrí    s€  € ô
 —‘˜3¢Ð-Ó.€Jð   -Ñ/ÐÜ×Ñ˜
Ø)Ø,0õ2ô
 #Ð#4×#<Ñ#<Ó#>Ó?ÐÜÐ&Ó'¨1Ò,Ð,Ð,Ø+¨AÑ.€MÜ—-‘- È$ÔO€KØ˜Ò$Ð$Ð$ô
 ˜×1Ñ1Ó3Ó4€Hð �B‰<˜8 B™<Ò'Ð'Ð'Ø!)¨"¡¨x¸©|Ð€HˆR�L�(˜2‘,ð ! ?Ñ2ÐÜÐÐ 2Ô3à,¨}×/AÑ/AÑAÐØ×#Ñ# HÔ-ô —M‘MÐ"5Ø=BôD€Mð ˜JÒ&Ð&Ð&ØœBŸH™H cª<Ð%8Ó9Ò9Ð9Ð9ô 
�‰”wÐ&AÖ	BÜ�M‰MÐ-È$ÔOˆ÷ 
C×	BÑ	Bús   ÅE#Å#E,rl   z/tmp/z/tmp/file1.parquetz/tmp/file2.parquetc                 óÒ   — | j                  t        j                  dd «       t        j                  t
        d¬«      5  t        j                  |¬«       d d d «       y # 1 sw Y   y xY w)Nzpyarrow.datasetr”   r   )rl   )ÚsetitemÚsysÚmodulesr   r   r   rR   rg   )Úmonkeypatchrl   s     r    Ú9test_read_table_raises_value_error_when_ds_is_unavailableró  C  sC   € ð ×ÑœŸ™Ð%6¸Ô=ä	�‰”zÐ)@Ö	AÜ
�‰˜VÕ$÷ 
B×	AÑ	Aús   ½AÁA&)Zr`   rð  Úcollectionsr   rå   rB  r{  Úshutilr   Údecimalr   r   Úpyarrowr   r   Úpyarrow.testsr   Úpyarrow.tests.parquet.commonr   r	   r
   Úpyarrow.parquetÚparquetrR   r   r   r‚   Úpandasr©   Úpandas.testingÚtestingrÃ   Úpyarrow.tests.pandas_examplesr   r   Únumpyr¿   ÚmarkÚ
pytestmarkr!   r.   r6   r:   rH   rY   rn   rq   rv   r{   r—   Úslowrœ   r¦   r¬   rº   rÆ   rÍ   ÚparametrizeÚLocalFileSystemrÓ   rÖ   rç   rê   r   r  r)  r7  r;  rE  rM  rS  r]  rt  rw  r  r…  r‰  r‹  Úfilterwarningsr”  rª  r­  r¶  r¸  rÅ  rÌ  râ  Údatasetrí  ró  rz   r/   r    Ú<module>r     sJ  ðó$ 
Û 
Ý #Û 	Û 	Û Ý Ý ã ã Ý Ý ÷7ñ 7ðÝ ßFð
ÛÝåBÝ<ðÛð �[‰[× Ñ €
ò.ò=ð ‡�×Ññó ðð ‡�×Ññ;ó ð;ð ‡�×Ññ3ó ð3ð$ ‡�×Ññ$ó ð$ò ð" ‡�×Ññ$ó ð$ò$òòð0 ‡�×Ññ*ó ð*ð ‡�×Ññó ðð ‡�×Ññó ðòð8 ‡�×Ññ'ó ð'ò$Að  ‡�×Ñ˜ØÐ
ˆ"×
Ñ
Ó
ð(ó ð ‡�×Ñ˜Ð!@ÓAñ ó Bóð ò*3ò
&ò ò#/òL34òl}/ò@*2òZCò@*òF2ð ‡�×Ññ!ó ð!ð" ‡�×Ññ/ó ð/ð  ‡�×Ññ!ó ð!ò4!ò2ð ‡�×ÑñDó ðDò
ð ‡�×ÑØ‡�×ÑØ‡�×ÑÐ=Ó>Ø‡�×ÑÐLÓMØ‡�×ÑÐBÓCñ#Jó Dó Nó ?ó ó ð
#JðL ‡�×Ñ˜Ù$Ù8Ù%Ù9ð	+ó ð ‡�×ÑÐ*¨U°D¨MÓ:ñ4ó ;óð4ò(	 ò6ò$òò&ò67%ðt ‡�×Ññ1Pó ð1Pðh ‡�×ÑØˆwÐ-Ð/CÐDÐEóGñ%óGñ%øð  ò Ø	ƒBðûð ò Ø€N€B‹ðûð
 ò Ø	ƒBðús6   ÁN2 ÁO  Á,O Î2N=Î<N=Ï 	OÏOÏOÏO