Ë
    _Qêj~Z  ã                   óº  — 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mZmZ 	 d dlZd dlmZ d dlmZmZ ej6                  j                  Zej6                  j(                  d„ «       Zej6                  j(                  d„ «       Zej6                  j(                  d„ «       Zej6                  j(                  d	„ «       Z ej6                  j(                  d
„ «       Z!ej6                  j(                  d„ «       Z"ej6                  j(                  d„ «       Z#ej6                  j(                  d„ «       Z$ej6                  j(                  d„ «       Z%ej6                  j(                  d„ «       Z&ej6                  j(                  d„ «       Z'ej6                  j(                  d„ «       Z(ej6                  j(                  d„ «       Z)ej6                  j(                  d„ «       Z*ej6                  j(                  d„ «       Z+ej6                  j(                  d„ «       Z,ej6                  j(                  d„ «       Z-ej6                  j(                  d„ «       Z.ej6                  j(                  d„ «       Z/ej6                  j(                  d„ «       Z0ej6                  j(                  d„ «       Z1ej6                  j(                  d„ «       Z2ej6                  j(                  d„ «       Z3ej6                  j(                  d„ «       Z4ej6                  j(                  d„ «       Z5ej6                  j(                  ej6                  jm                  dg d ¢«      ej6                  jm                  d!d"d#g«      d$„ «       «       «       Z7ej6                  j(                  d%„ «       Z8ej6                  j(                  d&„ «       Z9y# 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)Ú_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         úf/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pyarrow/tests/parquet/test_pandas.pyÚ#test_pandas_parquet_custom_metadatar*   6   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.   r/   é   é   gš™™™™™ñ?F)r   Úpreserve_indexT)Úcheck_metadatazmerged.parquet)r   )r   r   ÚfieldÚint16Úfloat32r/   Ú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_metadatarJ   J   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_persistencerR   g   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_multiindexrf   €   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©r8   r   r^   )r
   r   r   r   r   r_   r   r   r`   r   ra   rb   rc   )r$   r%   r&   r'   r(   rd   r    re   s           r)   Ú<test_pandas_parquet_2_roundtrip_read_pandas_no_index_writtenri   “   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   ra   rb   rc   ©r%   r'   ÚimosÚbufÚreaderre   s         r)   Ú)test_pandas_parquet_native_file_roundtriprv   ¬   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   rk   rl   ÚstringsrA   ©r^   )r   r   r   r   ro   r   rp   rq   r   r`   ra   rb   rc   rr   s         r)   Útest_read_pandas_column_subsetrz   ¸   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   rk   rl   rn   rr   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   ro   r   )r„   r%   r'   rs   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.parquetr7   r1   r   )ÚfooÚbarNÚbazÚqux)Úint64r<   rM   Úboolrx   Úwbrk   rl   )r=   r>   r?   r@   r‹   r<   rM   ÚrandomÚrandnr   r   r   Úopenr   ÚioÚBytesIOÚ
read_bytesr   ra   rb   rc   )	r$   r&   r   r%   r'   Úfr„   rd   re   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   r1   )rA   Úuint16Úuint32Úuint64Úint8r;   Úint32r‹   r<   rM   rŒ   r   )TFrk   )rm   Úuse_dictionary)rm   Úwrite_statistics)ÚNONEÚSNAPPYÚGZIPÚLZ4ÚZSTDrž   )rm   Úcompression)r?   rŽ   Úseedr=   r>   r@   rA   r—   r˜   r™   r;   r›   r‹   r<   rM   r�   r   r   r   r   r   ra   rb   rc   ÚlibÚCodecÚis_available)
r$   r   r%   r&   r'   rœ   rd   re   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   rT   r‡   ÚflavorÚspark)	r   r?   r@   ÚlenÚindexr   r	   rb   rc   )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]r1   r³   F©Údrop)r=   Ú	TimestampÚstrr>   Ú	set_indexr   r   r   r   r   ra   rb   rc   )r$   r„   ÚpathÚdfxÚtdfxr'   Ú	result_dfs          r)   Ú test_index_column_name_duplicater¾   2  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 )	Nr0   )r‡   r‡   rˆ   ÚfoobarÚsome_numbersrX   Únumbers)r®   zdup_multi_index_levels.parquet)r\   r   r=   rZ   Úfrom_arraysr>   r   r   r   r   r   rB   ra   rb   rc   )	r$   Únum_rowsrÂ   r®   r%   rQ   r&   Úresult_tabler½   s	            r)   Ú test_multiindex_duplicate_valuesrÆ   P  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   ra   rb   rc   ©ÚdatadirÚexpected_stringÚexpectedrQ   r¯   s        r)   Ú&test_backwards_compatible_index_namingrÕ   f  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   ra   rb   rc   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   ra   rb   rc   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        j                  ddd¬«      j                  d«      }t        j                  g d¢g d¢|dœ«      }t         j                  j                  g d¢|gd	d g¬
«      |_        | dz  }t        |«      }|j                  «       }t        j                  ||d¬«       t        |dg¬«      }|j                  «       }t        j                  ||dg   j                  d¬«      «       y )Nz
2017-01-01r0   zEurope/Brussels)ÚperiodsÚtzÚns©r   é   r0   )gš™™™™™¹?gš™™™™™É?g333333Ó?©ÚaÚbÚcr®   rX   z'v0.7.1.column-metadata-handling.parquetF)Ú
check_freqrç   ry   Trµ   )r=   Ú
date_rangeÚas_unitr>   rZ   rÃ   r®   r   ra   rb   rc   Úreset_index)rÒ   ÚdatesrÔ   rº   rQ   r¯   s         r)   Ú2test_backwards_compatible_column_metadata_handlingrï   ®  sã   € ä�M‰MØ˜aÐ$5ôç�gˆdƒmð 
ô �|‰|ÚšlØñ	ó€Hô —]‘]×.Ñ.Ú	˜%Ð Ø˜ˆoð /ó €H„Nð Ð>Ñ>€DÜ˜Ó€EØ�_‰_Ó€FÜ×Ñ˜& (°uÕ=äØ�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Úc2ry   Úcategory)r=   r>   Úastyper¹   r   r   r   ro   r   rD   r`   rp   ra   Ú
isinstancer®   ÚCategoricalIndexrB   )r%   rQ   Ú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é   N)rè   ré   rñ   T)Ú
categoriesÚordered)r=   r>   ÚCategoricalr   r   r   ro   r   rD   rp   r`   ra   rb   rc   )r%   rQ   rø   Úcontentsr¯   s        r)   Ú)test_categorical_order_survives_roundtripr   Ô  s’   € ô 
�‰�sœBŸN™NÚª/À4ôIð Jó 
K€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ô   rk   rT   )rm   Ú
chunk_sizer   r   )r=   r>   rõ   r   r   r   ro   r   rD   Ú
read_tablerp   rB   )r%   Údf_categoryrQ   Ú	table_catrt   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   rU   rå   r›   r1   )r‡   rˆ   r‰   Úx)rü   rô   )r?   Úarrayr=   r>   rþ   Ú
from_codesr   ro   r   rD   rQ   r  rp   ra   r	  r2   Úcatrü   Úallrb   rc   )Úcodesrü   r%   rt   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                 ó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 )Nr	  )r‡   rˆ   r‡   zstring[pyarrow]r1   rô   zcat.parquet)r=   r>   rõ   r   r
  Ú	to_pylistr  rü   Úvaluesr¸   r   rD   rQ   r  ra   rb   rc   )r$   rE   rF   rº   r¯   s        r)   Ú)test_categories_with_string_pyarrow_dtyper  	  s7  € ô �,‰,˜Ò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   rQ   r   Úwrite_to_datasetr¸   r  ra   rb   rc   rD   )r$   r%   rQ   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   rQ   Úcopyrõ   r   r  r¸   r  ra   rb   rc   rD   )r$   r%   rQ   Údf_catr¯   s        r)   Ú+test_write_to_dataset_pandas_preserve_indexr$  3  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+   r8   )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 )Nr7   )r¤   r   r‹   r1   r®   r   z.parquetrh   rA   rx   ry   F)r   Úmkdirr   r   r=   r!  r?   r@   r®   r   r   r   Úreplace_schema_metadatar   r   r   Úappendr   Úwrite_metadataÚParquetDatasetr`   ra   Úconcatr   rb   rc   )r$   r8   r%  Únfilesr   ÚdirpathÚ	test_dataÚframesÚpathsÚir%   rº   rQ   Útable_for_metadataÚdatasetr^   r¯   r	  rÔ   s                      r)   Ú(test_dataset_read_pandas_common_metadatar7  L  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   r`   r   r¸   r   rB   r   rQ   )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_r/   r   r:   r   r   r   r   r`   ra   rb   rc   )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?   ÚImportErrorÚpytestÚpyarrowr   Ú
pyarrow.fsr   r   Úpyarrow.utilr   Úpyarrow.parquetÚparquetr   Úpyarrow.tests.parquet.commonr   r   r   Úpandasr=   Úpandas.testingÚtestingrb   r	   r
   ÚmarkÚ
pytestmarkr*   rJ   rR   rf   ri   rv   rz   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ð, ‡�×Ññ)ó ð)ð ‡�×Ññ&ó ð&ð ‡�×Ññ&ó ð&ð" ‡�×Ññ&ó ð&ð$ ‡�×Ññ'ó ð'ð( ‡�×Ññ8ó ð8ð( ‡�×Ññ&ó ð&ð0 ‡�×ÑØ‡�×ÑÐ)Ò+>Ó?Ø‡�×ÑÐ)¨KÐ9KÐ+LÓMñ,,ó Nó @ó ð,,ð^ ‡�×Ññ'ó ð'ð ‡�×Ññ&ó ñ&øðq ò Ø	ƒBðûð ò Ø	ƒBðûð ò Ø€N€B‹ðús3   ŠN1 ¥N? ¶O Î1N<Î;N<Î?O
Ï	O
Ï	OÏO