Ë
    ìmxi÷[  ã                   óÆ  — d dl Z d dlZ	 d dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZ 	 d dlmZ d dlmZmZmZ 	 d dlZd dlmZ d dlmZmZ ej:                  j                   Zej:                  j,                  d„ «       Zej:                  j,                  d„ «       Z ej:                  j,                  d	„ «       Z!ej:                  j,                  d
„ «       Z"ej:                  j,                  d„ «       Z#ej:                  j,                  d„ «       Z$ej:                  j,                  d„ «       Z%ej:                  j,                  d„ «       Z&ej:                  j,                  d„ «       Z'ej:                  j,                  d„ «       Z(ej:                  j,                  d„ «       Z)ej:                  j,                  d„ «       Z*ej:                  j,                  d„ «       Z+ej:                  j,                  d„ «       Z,ej:                  j,                  d„ «       Z-ej:                  j,                  d„ «       Z.ej:                  j,                  d„ «       Z/ej:                  j,                  d„ «       Z0ej:                  j,                  d„ «       Z1ej:                  j,                  d„ «       Z2ej:                  j,                  d„ «       Z3ej:                  j,                  d„ «       Z4ej:                  j,                  d„ «       Z5ej:                  j,                  d„ «       Z6ej:                  j,                  d„ «       Z7ej:                  j,                  ej:                  jq                  d g d!¢«      ej:                  jq                  d"d#d$g«      d%„ «       «       «       Z9ej:                  j,                  d&„ «       Z:ej:                  j,                  d'„ «       Z;y# e$ r dZY �Œ³w xY w# e$ r dZY �Œ”w xY w# e$ r dxZZY �Œ‘w xY w)(é    N)ÚLocalFileSystemÚSubTreeFileSystem)Úguid)ÚVersion)Ú_read_tableÚ_test_dataframeÚ_write_table)Ú_roundtrip_pandas_dataframeÚalltypes_samplec                 ój  — t        d¬«      }| dz  }t        j                  j                  |«      }d|j                  j
                  v sJ ‚t        ||«       t        j                  |«      j
                  }d|v sJ ‚t        j                  |d   j                  d«      «      }|d   dd ddd	d
œgk(  sJ ‚y )Né'  ©Úsizeúpandas_roundtrip.parquetó   pandasÚutf8Úindex_columnsÚranger   é   )ÚkindÚnameÚstartÚstopÚstep)r   ÚpaÚTableÚfrom_pandasÚschemaÚmetadatar	   ÚpqÚread_metadataÚjsonÚloadsÚdecode)ÚtempdirÚdfÚfilenameÚarrow_tabler   Újss         úX/home/htdocs/ttos/venv/lib/python3.12/site-packages/pyarrow/tests/parquet/test_pandas.pyÚ#test_pandas_parquet_custom_metadatar+   7   s¿   € ä	˜eÔ	$€BàÐ3Ñ3€HÜ—(‘(×&Ñ& rÓ*€KØ˜×*Ñ*×3Ñ3Ñ3Ð3Ð3ä�˜hÔ'ä×Ñ Ó)×2Ñ2€HØ˜Ñ Ð Ð ä	�‰�H˜YÑ'×.Ñ.¨vÓ6Ó	7€BØˆoÑ¨GØ,0Ø-.¸Ø,-ñ$/ð #0ò 0ð 0ñ 0ó    c           	      ó¸  — t        j                  t        j                  dt        j                  «       «      t        j                  dt        j                  «       «      t        j                  dt        j
                  «       «      g«      }t        j                  t        j                  dt        j                  ¬«      t        j                  dt        j                  ¬«      g d¢dœ«      }t        j                  dd	gd
d gd d gdœ«      }t         j                  j                  ||d¬«      }t         j                  j                  ||d¬«      }|j                  j                  |j                  d¬«      rJ ‚|j                  j                  |j                  «      sJ ‚t        j                  | dz  |¬«      }|j!                  |«       |j!                  |«       y )NÚintÚfloatÚstringé   ©Údtype)ÚABBAÚEDDAÚACDC)r.   r/   r0   é   é   gš™™™™™ñ?F)r   Úpreserve_indexT)Úcheck_metadatazmerged.parquet)r   )r   r   ÚfieldÚint16Úfloat32r0   ÚpdÚ	DataFrameÚnpÚarangeÚuint8r   r   Úequalsr    ÚParquetWriterÚwrite_table)r%   r   Údf1Údf2Útable1Útable2Úwriters          r*   Ú:test_merging_parquet_tables_with_different_pandas_metadatarK   K   sb  € ô �Y‰YÜ
�‰�œŸ™›
Ó#Ü
�‰�œ"Ÿ*™*›,Ó'Ü
�‰�œ2Ÿ9™9›;Ó'ðó €Fô
 �,‰,Ü�y‰y˜¤"§(¡(Ô+Ü—‘˜1¤B§J¡JÔ/Ú*ñó €Cô
 �,‰,Ø�1ˆvØ�t�Ø˜�,ñó €Cô
 �X‰X×!Ñ! #¨fÀUÐ!ÓK€FÜ�X‰X×!Ñ! #¨fÀUÐ!ÓK€Fà�}‰}×#Ñ# F§M¡MÀ$Ð#ÔGÐGÐGØ�=‰=×Ñ §¡Ô.Ð.Ð.ä×Ñ˜gÐ(8Ñ8ÀÔH€FØ
×Ñ�vÔØ
×Ñ�vÕr,   c                 óŽ  — | dz  }t        d¬«      }dddddœ|_        t        j                  j	                  |«      }d	|j
                  j                  d
   v sJ ‚t        ||«       t        j                  |«      j                  }t        j                  |d
   j                  d«      «      }d|v sJ ‚|d   |j                  k(  sJ ‚y )Nzmetadata_persistence.parquetr   r   zhalf-precisionzsingle precisionzdouble precisionz%Attributes Persistence Test DataFrame)Úfloat16r=   Úfloat64Ú
desciptions
   attributesr   r   Ú
attributes)r   Úattrsr   r   r   r   r   r	   r    r!   r"   r#   r$   )r%   r'   r&   Útabler   r)   s         r*   Ú$test_attributes_metadata_persistencerS   h   sÄ   € ð Ð7Ñ7€HÜ	˜eÔ	$€Bà#Ø%Ø%Ø=ñ	€B„Hô �H‰H× Ñ  Ó$€EØ˜EŸL™L×1Ñ1°)Ñ<Ñ<Ð<Ð<ä�˜Ô!Ü×Ñ Ó)×2Ñ2€HÜ	�‰�H˜YÑ'×.Ñ.¨vÓ6Ó	7€BØ˜2ÑÐÐØˆlÑ˜rŸx™xÒ'Ð'Ñ'r,   c                 óÌ  — t        d¬«      }t        j                  j                  t	        t        |j                  |j                  d d d…   «      «      ddg¬«      |_        | dz  }t        j                  j                  |«      }|j                  j                  €J ‚t        ||«       t        j                  |«      }|j                  «       }t!        j"                  ||«       y )Né
   r   éÿÿÿÿÚlevel_1Úlevel_2©Únamesr   )r   r>   Ú
MultiIndexÚfrom_tuplesÚlistÚzipÚcolumnsr   r   r   r   Úpandas_metadatar	   r    Úread_pandasÚ	to_pandasÚtmÚassert_frame_equal)r%   r&   r'   r(   Ú
table_readÚdf_reads         r*   Ú%test_pandas_parquet_column_multiindexrg   �   s¾   € ä	˜bÔ	!€BÜ—‘×*Ñ*ÜŒS�—‘˜RŸZ™Z©¨"¨Ñ-Ó.Ó/Ø˜)Ð$ð +ó €B„Jð
 Ð3Ñ3€HÜ—(‘(×&Ñ& rÓ*€KØ×Ñ×-Ñ-Ð9Ð9Ð9ä�˜hÔ'ä—‘ Ó)€JØ×"Ñ"Ó$€GÜ×Ñ˜"˜gÕ&r,   c                 óÚ  — t        d¬«      }| dz  }t        j                  j                  |d¬«      }|j                  j
                  }|d   rJ ‚|d   sJ ‚t        ||«       t        j                  |«      }|j                  j
                  }|d   rJ ‚|j                  j                  }|j                  j                  |k(  sJ ‚|j                  «       }t        j                  ||«       y )Nr   r   r   F©r9   r   r_   )r   r   r   r   r   r`   r	   r    ra   r   rb   rc   rd   )r%   r&   r'   r(   r)   re   r!   rf   s           r*   Ú<test_pandas_parquet_2_roundtrip_read_pandas_no_index_writtenrj   ”   sÝ   € ä	˜eÔ	$€BàÐ3Ñ3€HÜ—(‘(×&Ñ& r¸%Ð&Ó@€KØ	×	Ñ	×	+Ñ	+€BØ�/Ò"Ð"Ð"ð ˆiŠ=Ðˆ=ä�˜hÔ'Ü—‘ Ó)€Jà	×	Ñ	×	*Ñ	*€BØ�/Ò"Ð"Ð"à×%Ñ%×.Ñ.€MØ×Ñ×&Ñ&¨-Ò7Ð7Ð7à×"Ñ"Ó$€GÜ×Ñ˜"˜gÕ&r,   c                  óD  — t        d«      } t        j                  j                  | «      }t        j                  «       }t        ||d¬«       |j                  «       }t        j                  |«      }t        |«      j                  «       }t        j                  | |«       y )Nr   ú2.6©Úversion©r   r   r   r   ÚBufferOutputStreamr	   ÚgetvalueÚBufferReaderr   rb   rc   rd   ©r&   r(   ÚimosÚbufÚreaderrf   s         r*   Ú)test_pandas_parquet_native_file_roundtriprw   ­   sv   € ä	˜Ó	€BÜ—(‘(×&Ñ& rÓ*€KÜ× Ñ Ó"€DÜ�˜d¨EÕ2Ø
�-‰-‹/€CÜ�_‰_˜SÓ!€FÜ˜&Ó!×+Ñ+Ó-€GÜ×Ñ˜"˜gÕ&r,   c                  ój  — t        d«      } t        j                  j                  | «      }t        j                  «       }t        ||d¬«       |j                  «       }t        j                  |«      }t        j                  |ddg¬«      j                  «       }t        j                  | ddg   |«       y )Nr   rl   rm   ÚstringsrB   ©r_   )r   r   r   r   rp   r	   rq   rr   r    ra   rb   rc   rd   rs   s         r*   Útest_read_pandas_column_subsetr{   ¹   s‘   € ä	˜Ó	€BÜ—(‘(×&Ñ& rÓ*€KÜ× Ñ Ó"€DÜ�˜d¨EÕ2Ø
�-‰-‹/€CÜ�_‰_˜SÓ!€FÜ�n‰nØ˜ GÐ,ôç�iƒkð ô ×Ñ˜"˜i¨Ð1Ñ2°GÕ<r,   c                  óD  — t        d«      } t        j                  j                  | «      }t        j                  «       }t        ||d¬«       |j                  «       }t        j                  |«      }t        |«      j                  «       }t        j                  | |«       y )Nr   rl   rm   ro   rs   s         r*   Ú#test_pandas_parquet_empty_roundtripr}   Ç   sv   € ä	˜Ó	€BÜ—(‘(×&Ñ& rÓ*€KÜ× Ñ Ó"€DÜ�˜d¨EÕ2Ø
�-‰-‹/€CÜ�_‰_˜SÓ!€FÜ˜&Ó!×+Ñ+Ó-€GÜ×Ñ˜"˜gÕ&r,   c                  óÊ   — ddiddiddigddœ} t        j                  | ¬«      }t        j                  j	                  |«      }t        j
                  «       }t        ||«       y )	NÚ	page_typer   Úrecord_typeÚnon_consecutive_homer   Ú1001)Úagg_colÚ	uid_first)Údata)r>   r?   r   r   r   rp   r	   )r…   r&   r(   rt   s       r*   Ú!test_pandas_can_write_nested_datar†   Ó   si   € ð ˜!ÐØ˜AÐØ# QÐ'ð
ð
 ñ€Dô 
�‰˜4Ô	 €BÜ—(‘(×&Ñ& rÓ*€KÜ× Ñ Ó"€Dä�˜dÕ#r,   c                 ó¬  — | dz  }d}t        j                  t        j                  |t        j                  ¬«      t        j                  |t        j
                  ¬«      t        j                  |t        j                  ¬«      t        j                  j                  |«      dkD  g d¢dœ«      }t        j                  j                  |«      }|j                  d«      5 }t        ||d¬	«       d d d «       t        j                  |j!                  «       «      }t#        |«      }|j%                  «       }t'        j(                  ||«       y # 1 sw Y   Œ^xY w)
Nzpandas_pyfile_roundtrip.parquetr8   r2   r   )ÚfooÚbarNÚbazÚqux)Úint64r=   rN   Úboolry   Úwbrl   rm   )r>   r?   r@   rA   rŒ   r=   rN   ÚrandomÚrandnr   r   r   Úopenr	   ÚioÚBytesIOÚ
read_bytesr   rb   rc   rd   )	r%   r'   r   r&   r(   Úfr…   re   rf   s	            r*   Ú$test_pandas_parquet_pyfile_roundtripr–   ä   sù   € àÐ:Ñ:€HØ€DÜ	�‰Ü—‘˜4¤r§x¡xÔ0Ü—9‘9˜T¬¯©Ô4Ü—9‘9˜T¬¯©Ô4Ü—	‘	—‘ Ó%¨Ñ)Ú5ñó 
€Bô —(‘(×&Ñ& rÓ*€Kà	�‰�tÓ	ð 4 Ü�[ !¨UÕ3÷4ô �:‰:�h×)Ñ)Ó+Ó,€Dä˜TÓ"€JØ×"Ñ"Ó$€GÜ×Ñ˜"˜gÕ&÷4ð 4ús   ÃE
Å
Ec                 óÔ  — d}t         j                  j                  d«       t        j                  t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t        j
                  |t         j                  ¬«      t         j                  j                  |«      dkD  dœ«      }| dz  }t         j"                  j%                  |«      }dD ]B  }t'        ||d|¬«       t)        |«      }|j+                  «       }t-        j.                  ||«       ŒD dD ]B  }t'        ||d|¬	«       t)        |«      }|j+                  «       }t-        j.                  ||«       ŒD d
D ]q  }	|	dk7  r*t         j0                  j2                  j5                  |	«      sŒ2t'        ||d|	¬«       t)        |«      }|j+                  «       }t-        j.                  ||«       Œs y )Nr   r   r2   )rB   Úuint16Úuint32Úuint64Úint8r<   Úint32rŒ   r=   rN   r�   r   )TFrl   )rn   Úuse_dictionary)rn   Úwrite_statistics)ÚNONEÚSNAPPYÚGZIPÚLZ4ÚZSTDrŸ   )rn   Úcompression)r@   r�   Úseedr>   r?   rA   rB   r˜   r™   rš   r<   rœ   rŒ   r=   rN   r�   r   r   r   r	   r   rb   rc   rd   ÚlibÚCodecÚis_available)
r%   r   r&   r'   r(   r�   re   rf   rž   r¤   s
             r*   Ú)test_pandas_parquet_configuration_optionsr©   ü   s  € à€DÜ‡I�I‡N�N�1ÔÜ	�‰Ü—‘˜4¤r§x¡xÔ0Ü—)‘)˜D¬¯	©	Ô2Ü—)‘)˜D¬¯	©	Ô2Ü—)‘)˜D¬¯	©	Ô2Ü—	‘	˜$¤b§h¡hÔ/Ü—‘˜4¤r§x¡xÔ0Ü—‘˜4¤r§x¡xÔ0Ü—‘˜4¤r§x¡xÔ0Ü—9‘9˜T¬¯©Ô4Ü—9‘9˜T¬¯©Ô4Ü—	‘	—‘ Ó%¨Ñ)ñó 
€Bð Ð3Ñ3€HÜ—(‘(×&Ñ& rÓ*€Kà'ò +ˆÜ�[ (°EØ$2õ	4ä  Ó*ˆ
Ø×&Ñ&Ó(ˆÜ
×Ñ˜b 'Õ*ð+ð *ò +ÐÜ�[ (°EØ&6õ	8ä  Ó*ˆ
Ø×&Ñ&Ó(ˆÜ
×Ñ˜b 'Õ*ð+ð Aò +ˆØ˜6Ò!Ü—F‘F—L‘L×-Ñ-¨kÔ:ØÜ�[ (°EØ!,õ	.ä  Ó*ˆ
Ø×&Ñ&Ó(ˆÜ
×Ñ˜b 'Õ*ñ+r,   c                  óÖ   — t        d¬«      } t        j                  ddt        | «      z  d«      | _        d| j                  _        t        | ddi«      }t        j                  || «       y )Néd   r   r   rU   rˆ   ÚflavorÚspark)	r   r@   rA   ÚlenÚindexr   r
   rc   rd   )r&   Úresults     r*   Ú+test_spark_flavor_preserves_pandas_metadatar±   )  sT   € ä	˜cÔ	"€BÜ�y‰y˜˜B¤ R£™L¨"Ó-€B„HØ€B‡H�H„Mä(¨¨h¸Ð-@ÓA€FÜ×Ñ˜& "Õ%r,   c                 ó&  — t        j                  d«      dt        j                  d«      dit        j                  d«      t        j                  d«      t        j                  d«      t        j                  d«      idœ}t        | dz  «      }t        j                  |d¬«      j	                  dd	¬
«      }t
        j                  j                  |«      }t        ||«       t        |«      }|j                  «       }t        j                  ||«       y )Nz2017-06-30 01:31:00gí*¤ü_c@z2017-06-30 01:32:00)ÚcloseÚtimeúdata.parquetzdatetime64[us]r2   r´   F©Údrop)r>   Ú	TimestampÚstrr?   Ú	set_indexr   r   r   r	   r   rb   rc   rd   )r%   r…   ÚpathÚdfxÚtdfxr(   Ú	result_dfs          r*   Ú test_index_column_name_duplicater¿   3  sé   € ô �L‰LÐ.Ó/Ð1CÜ�L‰LÐ.Ó/Ð1Cð
ô
 �L‰LÐ.Ó/´·±Ø%ó2ô �L‰LÐ.Ó/´·±Ø%ó2ð	
ñ€Dô ˆw˜Ñ'Ó(€Dô
 �,‰,�tÐ#3Ô
4×
>Ñ
>¸vÈEÐ
>Ó
R€Cä�8‰8×Ñ Ó$€DÜ��tÔÜ˜dÓ#€KØ×%Ñ%Ó'€IÜ×Ñ˜) SÕ)r,   c                 ó˜  — d}t        t        |«      «      }t        j                  j	                  g d¢|gddg¬«      }t        j
                  d|i|¬«      }t        j                  j                  |«      }| dz  }t        ||«       t        |«      }|j                  |«      sJ ‚|j                  «       }t        j                  ||«       y )	Nr1   )rˆ   rˆ   r‰   ÚfoobarÚsome_numbersrY   Únumbers)r¯   zdup_multi_index_levels.parquet)r]   r   r>   r[   Úfrom_arraysr?   r   r   r   r	   r   rC   rb   rc   rd   )	r%   Únum_rowsrÃ   r¯   r&   rR   r'   Úresult_tabler¾   s	            r*   Ú test_multiindex_duplicate_valuesrÇ   Q  s¸   € à€HÜ”5˜“?Ó#€GÜ�M‰M×%Ñ%Ú	 Ð(Ø˜Ð(ð &ó €Eô
 
�‰�y 'Ð*°%Ô	8€BÜ�H‰H× Ñ  Ó$€EàÐ9Ñ9€Hä�˜Ô!Ü˜xÓ(€LØ�<‰<˜Ô%Ð%Ð%à×&Ñ&Ó(€IÜ×Ñ˜) RÕ(r,   c                 óÊ   — d}t        j                  t        j                  |«      dd dd¬«      }t	        | dz  «      }|j                  «       }t        j                  ||«       y )Nó  carat        cut  color  clarity  depth  table  price     x     y     z
 0.23      Ideal      E      SI2   61.5   55.0    326  3.95  3.98  2.43
 0.21    Premium      E      SI1   59.8   61.0    326  3.89  3.84  2.31
 0.23       Good      E      VS1   56.9   65.0    327  4.05  4.07  2.31
 0.29    Premium      I      VS2   62.4   58.0    334  4.20  4.23  2.63
 0.31       Good      J      SI2   63.3   58.0    335  4.34  4.35  2.75
 0.24  Very Good      J     VVS2   62.8   57.0    336  3.94  3.96  2.48
 0.24  Very Good      I     VVS1   62.3   57.0    336  3.95  3.98  2.47
 0.26  Very Good      H      SI1   61.9   55.0    337  4.07  4.11  2.53
 0.22       Fair      E      VS2   65.1   61.0    337  3.87  3.78  2.49
 0.23  Very Good      H      VS1   59.4   61.0    338  4.00  4.05  2.39ú\s{2,}r   Úpython©ÚsepÚ	index_colÚheaderÚenginezv0.7.1.parquet)r>   Úread_csvr’   r“   r   rb   rc   rd   ©ÚdatadirÚexpected_stringÚexpectedrR   r°   s        r*   Ú&test_backwards_compatible_index_namingrÖ   g  s[   € ðK€Oô �{‰{œ2Ÿ:™: oÓ6¸IØ%)°!¸HôF€Hä˜Ð"2Ñ2Ó3€EØ�_‰_Ó€FÜ×Ñ˜& (Õ+r,   c                 óê   — d}t        j                  t        j                  |«      dg d¢dd¬«      j	                  «       }t        | dz  «      }|j                  «       }t        j                  ||«       y )NrÉ   rÊ   ©ÚcutÚcolorÚclarityr   rË   rÌ   zv0.7.1.all-named-index.parquet)	r>   rÑ   r’   r“   Ú
sort_indexr   rb   rc   rd   rÒ   s        r*   Ú1test_backwards_compatible_index_multi_level_namedrÝ   |  sj   € ðK€Oô �{‰{Ü
�
‰
�?Ó#¨Ú-Ø˜ô÷ �jƒlð	 ô ˜Ð"BÑBÓC€EØ�_‰_Ó€FÜ×Ñ˜& (Õ+r,   c                 ó.  — d}t        j                  t        j                  |«      dg d¢dd¬«      j	                  «       }|j
                  j                  g d¢«      |_        t        | dz  «      }|j                  «       }t        j                  ||«       y )	NrÉ   rÊ   rØ   r   rË   rÌ   )rÙ   NrÛ   zv0.7.1.some-named-index.parquet)r>   rÑ   r’   r“   rÜ   r¯   Ú	set_namesr   rb   rc   rd   rÒ   s        r*   Ú6test_backwards_compatible_index_multi_level_some_namedrà   •  s‚   € ðK€Oô �{‰{Ü
�
‰
�?Ó#ØÒ!<Ø˜ô÷ �jƒlð	 ð
 —^‘^×-Ñ-Ò.FÓG€H„Nä˜Ð"CÑCÓD€EØ�_‰_Ó€FÜ×Ñ˜& (Õ+r,   c           	      ó^  — t        d«      t        t        j                  «      k  rt        j                  d«       t        j
                  g d¢g d¢t        j                  ddd¬«      d	œ«      }t        j                  j                  g d	¢t        j                  ddd¬«      gd
d g¬«      |_	        | dz  }t        |«      }|j                  «       }t        j                  ||«       t        |dg¬«      }|j                  «       }t        j                  ||dg   j                  d¬«      «       y )Nz2.2.0zRegression in pandas 2.2.0©r   é   r1   )gš™™™™™¹?gš™™™™™É?g333333Ó?z
2017-01-01r1   zEurope/Brussels)ÚperiodsÚtz©ÚaÚbÚcr¯   rY   z'v0.7.1.column-metadata-handling.parquetrç   rz   Tr¶   )r   r>   Ú__version__ÚpytestÚskipr?   Ú
date_ranger[   rÄ   r¯   r   rb   rc   rd   Úreset_index)rÓ   rÕ   r»   rR   r°   s        r*   Ú2test_backwards_compatible_column_metadata_handlingrï   ¯  s  € äˆwÓœ7¤2§>¡>Ó2Ò2ô 	�‰Ð0Ô1Ü�|‰|ÚšlÜ�m‰m˜L°!Ð8IÔJñ	LóM€Hô —]‘]×.Ñ.Ú	Ü	�‰�|¨QÐ3DÔ	Eð	Gà˜ˆoð /ó €H„Nð
 Ð>Ñ>€DÜ˜Ó€EØ�_‰_Ó€FÜ×Ñ˜& (Ô+äØ�s�eô€Eà�_‰_Ó€FÜ×Ñ˜& (¨C¨5¡/×"=Ñ"=À4Ð"=Ó"HÕIr,   c                  ó"  — t        j                  ddgddggddg¬«      } | d   j                  d«      | d<   | j                  dg«      } t        j
                  j                  | «      }t	        j                  «       }t        j                  ||«       t        j                  |j                  «       «      j                  «       }t        |j                  t         j                  «      sJ ‚|j                  j!                  | j                  «      sJ ‚y )	Nrç   rè   ré   ÚdÚc1Úc2rz   Úcategory)r>   r?   Úastyperº   r   r   r   rp   r    rE   ra   rq   rb   Ú
isinstancer¯   ÚCategoricalIndexrC   )r&   rR   ÚbosÚref_dfs       r*   Ú)test_categorical_index_survives_roundtriprú   È  sÎ   € ô 
�‰˜˜S�z C¨ :Ð.¸¸t¸Ô	E€BØ�$‰x�‰˜zÓ*€B€t�HØ	�‰�t�fÓ	€Bä�H‰H× Ñ  Ó$€EÜ
×
Ñ
Ó
!€CÜ‡N�N�5˜#ÔÜ�^‰^˜CŸL™L›NÓ+×5Ñ5Ó7€FÜ�f—l‘l¤B×$7Ñ$7Ô8Ð8Ð8Ø�<‰<×Ñ˜rŸx™xÔ(Ð(Ñ(r,   c                  óŠ  — t        j                  dt        j                  g d¢g d¢d¬«      i«      } t        j                  j                  | «      }t        j                  «       }t        j                  ||«       |j                  «       }t        j                  |«      j                  «       }t        j                  || «       y )Nrç   )rç   rè   ré   rç   )rè   ré   rñ   T)Ú
categoriesÚordered)r>   r?   ÚCategoricalr   r   r   rp   r    rE   rq   ra   rb   rc   rd   )r&   rR   rø   Úcontentsr°   s        r*   Ú)test_categorical_order_survives_roundtripr   ×  s’   € ô 
�‰�sœBŸN™NÚªÀ$ôHð Ió 
J€Bô �H‰H× Ñ  Ó$€EÜ
×
Ñ
Ó
!€CÜ‡N�N�5˜#Ôà�|‰|‹~€HÜ�^‰^˜HÓ%×/Ñ/Ó1€Fä×Ñ˜& "Õ%r,   c                  óì  — t        j                  d gdz  dgdz  dœ«      } | j                  dddœ«      }t        j                  j                  | «      }t        j                  j                  |«      }t        j                  «       }t        j                  ||dd¬«       t        j                  |j                  «       «      }|d   j                  |d   «      sJ ‚|d	   j                  |d	   «      sJ ‚y )
Nr«   g      ð?)Úcolr.   rô   rl   rU   )rn   Ú
chunk_sizer   r   )r>   r?   rõ   r   r   r   rp   r    rE   Ú
read_tablerq   rC   )r&   Údf_categoryrR   Ú	table_catru   r°   s         r*   Ú*test_pandas_categorical_na_type_row_groupsr  ç  sÎ   € ô 
�‰˜t˜f s™l°C°5¸3±;Ñ?Ó	@€BØ—)‘) J°zÑBÓC€KÜ�H‰H× Ñ  Ó$€EÜ—‘×$Ñ$ [Ó1€IÜ
×
Ñ
Ó
!€Cô ‡N�N�9˜c¨5¸RÕ@Ü�]‰]˜3Ÿ<™<›>Ó*€Fð �!‰9×Ñ˜E !™HÔ%Ð%Ð%Ø�!‰9×Ñ˜E !™HÔ%Ð%Ñ%r,   c                  óN  — t        j                  g d¢d¬«      } g d¢}t        j                  dt        j                  j                  | |¬«      i«      }t        j                  «       }t        j                  t        j                  |«      |«       t        j                  |j                  «       «      j                  «       }|j                  j                  dk(  sJ ‚|j                  j                   j"                  |k(  j%                  «       sJ ‚t'        j(                  ||«       y )N)rã   r   r   rã   r   rV   rã   rœ   r2   )rˆ   r‰   rŠ   Úx)rü   rô   )r@   Úarrayr>   r?   rþ   Ú
from_codesr   rp   r    rE   rR   r  rq   rb   r	  r3   Úcatrü   Úallrc   rd   )Úcodesrü   r&   ru   r°   s        r*   Ú!test_pandas_categorical_roundtripr  ù  sØ   € ô
 �H‰HÒ+°7Ô;€EÚ&€JÜ	�‰�sœBŸN™N×5Ñ5Ø˜*ð 6ó &ð 'ó 
(€Bô ×
Ñ
Ó
!€CÜ‡N�N”2—8‘8˜B“< Ô%ä�]‰]˜3Ÿ<™<›>Ó*×4Ñ4Ó6€FØ�8‰8�>‰>˜ZÒ'Ð'Ð'Ø�H‰H�L‰L×#Ñ# zÑ1×6Ñ6Ô8Ð8Ð8Ü×Ñ˜& "Õ%r,   c                 ó¸  — t        t        j                  «      t        d«      k  rt        j                  d«       t        j
                  dg d¢id¬«      }|j                  d«      }t        j
                  dg d¢i«      }|j                  d«      }t        j                  |d   «      j                  «       t        j                  |d   «      j                  «       k(  sJ ‚t        j                  |d   j                  j                  j                  «      j                  «       t        j                  |d   j                  j                  j                  «      j                  «       k(  sJ ‚t        | dz  «      }t        j                  t        j                   |«      |«       t        j"                  |«      j%                  «       }t'        j(                  ||«       y )	Nz1.3.0z:PyArrow backed string data type introduced in pandas 1.3.0r	  )rˆ   r‰   rˆ   zstring[pyarrow]r2   rô   zcat.parquet)r   r>   rê   rë   rì   r?   rõ   r   r
  Ú	to_pylistr  rü   Úvaluesr¹   r    rE   rR   r  rb   rc   rd   )r%   rF   rG   r»   r°   s        r*   Ú)test_categories_with_string_pyarrow_dtyper    sZ  € ô Œr�~‰~Ó¤¨Ó!1Ò1Ü�‰ÐPÔQä
�,‰,˜Ò2Ð3Ð;LÔ
M€CØ
�*‰*�ZÓ
 €Cä
�,‰,˜Ò2Ð3Ó
4€CØ
�*‰*�ZÓ
 €Cô �8‰8�C˜‘HÓ×'Ñ'Ó)¬R¯X©X°c¸#±hÓ-?×-IÑ-IÓ-KÒKÐKÐKÜ�8‰8�C˜‘H—L‘L×+Ñ+×2Ñ2Ó3×=Ñ=Ó?Ä2Ç8Á8ØˆC‰�‰×Ñ×&Ñ&óD(ß(1©	«ò4ð 4ð 4ô ˆw˜Ñ&Ó'€DÜ‡N�N”2—8‘8˜C“= $Ô'Ü�]‰]˜4Ó ×*Ñ*Ó,€Fä×Ñ˜& #Õ&r,   c                 ó0  — t        j                  dg d¢dœ«      }|d   j                  d«      |d<   t        j                  |«      }t        j                  |t        | dz  «      dg¬«       t        j                  t        | dz  «      «      j                  «       }t        j                  |dg   |dg   «       t        j                  |t        | d	z  «      «       t        j                  t        | d	z  «      «      j                  «       }t        j                  |dg   |dg   «       t        j                  |t        | d
z  «      «       t        j                  t        | d
z  «      «      j                  «       }t        j                  |dg   |dg   «       y )Nrç   râ   ©Úpartr  r  ÚInt64Úcase1r  ©Úpartition_colsÚcase2rµ   )r>   r?   rõ   r   rR   r    Úwrite_to_datasetr¹   r  rb   rc   rd   rE   )r%   r&   rR   r°   s       r*   Ú5test_write_to_dataset_pandas_preserve_extensiondtypesr  $  sF  € ä	�‰˜sª9Ñ5Ó	6€BØ�5‘	× Ñ  Ó)€B€u�IÜ�H‰H�R‹L€Eä×ÑØŒs�7˜WÑ$Ó%°v°hõô �]‰]œ3˜w¨Ñ0Ó1Ó2×<Ñ<Ó>€FÜ×Ñ˜& % ™/¨2¨u¨g©;Ô7ä×Ñ˜œs 7¨WÑ#4Ó5Ô6Ü�]‰]œ3˜w¨Ñ0Ó1Ó2×<Ñ<Ó>€FÜ×Ñ˜& % ™/¨2¨u¨g©;Ô7ä‡N�N�5œ#˜g¨Ñ6Ó7Ô8Ü�]‰]œ3˜w¨Ñ7Ó8Ó9×CÑCÓE€FÜ×Ñ˜& % ™/¨2¨u¨g©;Õ7r,   c                 ój  — t        j                  g d¢g d¢dœ«      }t        j                  g d¢d¬«      |_        t	        j
                  |«      }|ddg   j                  «       }|d   j                  d	«      |d<   t        j                  |t        | d
z  «      dg¬«       t        j                  t        | d
z  «      «      j                  «       }t        j                  ||«       t        j                  |t        | dz  «      «       t        j                  t        | dz  «      «      j                  «       }t        j                  ||«       t        j                  |t        | dz  «      «       t        j                  t        | dz  «      «      j                  «       }t        j                  ||«       y )N)rç   rç   rè   râ   r  ræ   Úidx©r   r  r  rô   r  r  r  rµ   )r>   r?   ÚIndexr¯   r   rR   Úcopyrõ   r    r  r¹   r  rb   rc   rd   rE   )r%   r&   rR   Údf_catr°   s        r*   Ú+test_write_to_dataset_pandas_preserve_indexr$  9  sM  € ô 
�‰š²yÑAÓ	B€BÜ�x‰xš¨eÔ4€B„HÜ�H‰H�R‹L€EØ�˜�Ñ ×%Ñ%Ó'€FØ˜F‘^×*Ñ*¨:Ó6€Fˆ6�Nä×ÑØŒs�7˜WÑ$Ó%°v°hõô �]‰]œ3˜w¨Ñ0Ó1Ó2×<Ñ<Ó>€FÜ×Ñ˜& &Ô)ä×Ñ˜œs 7¨WÑ#4Ó5Ô6Ü�]‰]œ3˜w¨Ñ0Ó1Ó2×<Ñ<Ó>€FÜ×Ñ˜& "Ô%ä‡N�N�5œ#˜g¨Ñ6Ó7Ô8Ü�]‰]œ3˜w¨Ñ7Ó8Ó9×CÑCÓE€FÜ×Ñ˜& "Õ%r,   r9   )TFNÚmetadata_fnameÚ	_metadataÚ_common_metadatac                 óö  — d}d}| t        «       z  }|j                  «        g }g }g }t        |«      D ]Û  }	t        ||	¬«      }
t	        j
                  t        j                  |	|z  |	dz   |z  d¬«      d¬«      |
_        ||	› d�z  }t        j                  j                  |
|¬	«      }|j                  d «      }|j                  j                  �J ‚t        ||«       |j!                  |«       |j!                  |
«       |j!                  |«       ŒÝ t        j                  j                  
|¬	«      }t#        j$                  |j                  ||z  «       t#        j&                  |«      }d
dg}|j)                  |¬«      j+                  «       }t	        j,                  |D �cg c]  }||   ‘Œ	 c}«      }|dur|
j                  j.                  nd |j                  _        t1        j2                  ||«       y c c}w )Nr8   )r¥   r   rŒ   r2   r¯   r   z.parquetri   rB   ry   rz   F)r   Úmkdirr   r   r>   r!  r@   rA   r¯   r   r   r   Úreplace_schema_metadatar   r   r	   Úappendr    Úwrite_metadataÚParquetDatasetra   rb   Úconcatr   rc   rd   )r%   r9   r%  Únfilesr   ÚdirpathÚ	test_dataÚframesÚpathsÚir&   r»   rR   Útable_for_metadataÚdatasetr_   r°   r	  rÕ   s                      r*   Ú(test_dataset_read_pandas_common_metadatar7  R  sÉ  € ð €FØ€Dàœ›Ñ€GØ‡M�M„Oà€IØ€FØ€EÜ�6‹]ò ˆÜ˜T¨Ô*ˆÜ—8‘8Ü�I‰I�a˜$‘h  Q¡¨$¡°gÔ>ÀWô
ˆŒð ˜A˜3˜h˜Ñ'ˆä—‘×$Ñ$ R¸Ð$ÓGˆð ×-Ñ-¨dÓ3ˆØ�|‰|×$Ñ$Ð,Ð,Ð,ä�U˜DÔ!Ø×Ñ˜ÔØ�‰�bÔØ�‰�TÕð#ô( Ÿ™×-Ñ-Ø
˜>ð .ó Ðô ×ÑÐ(×/Ñ/°¸>Ñ1IÔJä×Ñ Ó(€GØ˜	Ð"€GØ× Ñ ¨Ð Ó1×;Ñ;Ó=€FÜ�y‰y¨fÖ5¨˜!˜G›*Ò5Ó6€Hà'¨uÑ4ˆ�‰�Š¸$ð ‡N�NÔä×Ñ˜& (Õ+ùò 6s   Æ!G6c                 ó  — t        j                  dg d¢i«      }| dz  }t        ||«       t        j                  dt        t        | «      t        «       «      ¬«      }|j                  t        j                  |«      «      sJ ‚y )Nrç   râ   rµ   )Ú
filesystem)r>   r?   r	   r    ra   r   r¹   r   rC   r   rR   )r%   r&   r'   r°   s       r*   Ú%test_read_pandas_passthrough_keywordsr:  „  si   € ô 
�‰�sšIÐ&Ó	'€Bà˜Ñ'€HÜ��XÔä�^‰^ØÜ$¤S¨£\´?Ó3DÓEô€Fð �=‰=œŸ™ "›Ô&Ð&Ñ&r,   c                 óz  — t        j                  t        j                  ddgddgg«      t        j                  ddg«      dœ«      }| dz  }t        j                  t        j
                  «       t        j
                  «       «      }t        j                  t        j                  d	|«      t        j                  d
t        j
                  «       «      g«      }t        j                  j                  ||«      }t        ||«       t        j                  |«      j                  «       }t        j                  ||«       y )N)ÚidÚ	something)Úvalue2Úelse)r<  Ú
something2)ÚvalueÚelse2rˆ   r‰   )Úcol1Úcol2rµ   rC  rD  )r>   r?   ÚSeriesr   Úmap_r0   r   r;   r   r   r	   r    ra   rb   rc   rd   )r%   r&   r'   Úudtr   r(   r°   s          r*   Útest_read_pandas_map_fieldsrH  ”  sê   € ô 
�‰Ü—	‘	Ø Ð"4Ð5Ø!Ð#5Ð6ð
ó ô —	‘	˜5 %˜.Ó)ñó 
€Bð ˜Ñ'€Hä
�'‰'”"—)‘)“+œrŸy™y›{Ó
+€CÜ�Y‰YœŸ™ ¨Ó-¬r¯x©x¸ÄÇ	Á	ÃÓ/LÐMÓN€FÜ—(‘(×&Ñ& r¨6Ó2€Kä�˜hÔ'ä�^‰^˜HÓ%×/Ñ/Ó1€FÜ×Ñ˜& "Õ%r,   )<r’   r"   Únumpyr@   ÚImportErrorrë   Úpyarrowr   Ú
pyarrow.fsr   r   Úpyarrow.utilr   Úpyarrow.vendored.versionr   Úpyarrow.parquetÚparquetr    Úpyarrow.tests.parquet.commonr   r   r	   Úpandasr>   Úpandas.testingÚtestingrc   r
   r   ÚmarkÚ
pytestmarkr+   rK   rS   rg   rj   rw   r{   r}   r†   r–   r©   r±   r¿   rÇ   rÖ   rÝ   rà   rï   rú   r   r  r  r  r  r$  Úparametrizer7  r:  rH  © r,   r*   ú<module>rY     s'  ðó$ 
Û ðÛó ã ß 9Ý Ý ,ðÝ ÷<ñ <ðÛÝ÷?ð �[‰[× Ñ €
ð ‡�×Ññ0ó ð0ð& ‡�×Ññó ðð8 ‡�×Ññ(ó ð(ð0 ‡�×Ññ'ó ð'ð$ ‡�×Ññ'ó ð'ð0 ‡�×Ññ'ó ð'ð ‡�×Ññ
=ó ð
=ð ‡�×Ññ'ó ð'ð ‡�×Ññ$ó ð$ð  ‡�×Ññ'ó ð'ð. ‡�×Ññ)+ó ð)+ðX ‡�×Ññ&ó ð&ð ‡�×Ññ*ó ð*ð: ‡�×Ññ)ó ð)ð* ‡�×Ññ,ó ð,ð( ‡�×Ññ,ó ð,ð0 ‡�×Ññ,ó ð,ð2 ‡�×ÑñJó ðJð0 ‡�×Ññ)ó ð)ð ‡�×Ññ&ó ð&ð ‡�×Ññ&ó ð&ð" ‡�×Ññ&ó ð&ð$ ‡�×Ññ'ó ð'ð. ‡�×Ññ8ó ð8ð( ‡�×Ññ&ó ð&ð0 ‡�×ÑØ‡�×ÑÐ)Ò+>Ó?Ø‡�×ÑÐ)¨KÐ9KÐ+LÓMñ,,ó Nó @ó ð,,ð^ ‡�×Ññ'ó ð'ð ‡�×Ññ&ó ñ&øð} ò Ø	ƒBðûð ò Ø	ƒBðûð ò Ø€N€B‹ðús3   ŠN7 «O ¼O Î7OÏOÏOÏOÏ	O ÏO 