+
    NV-j…_  ã                  ó®  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHtH	t	 ^ RI
HtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHtHt ^ RIHt ^ RIHtHtH t H!t!H"t" ]'       d   ^ RI#H$t$H%t%H&t&H't'H(t(H)t) R R lt*RR R llt+ ! R R4      t, ! R R],4      t- ! R R],4      t.RR R llt/]! R4      RRR]P`                  RRR3R R ll4       t1R# ) zparquet compat)ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚLiteral)Úcatch_warningsÚfilterwarnings)Úlib)Úimport_optional_dependency)ÚAbstractMethodErrorÚPandas4Warning)Ú
set_module)Úcheck_dtype_backend)Ú	DataFrameÚ
get_option)Úarrow_table_to_pandas)Ú	IOHandlesÚ
get_handleÚis_fsspec_urlÚis_urlÚstringify_path)ÚDtypeBackendÚFilePathÚParquetCompressionOptionsÚ
ReadBufferÚStorageOptionsÚWriteBufferc               ó    € V ^8„  d   QhRRRR/# )é   ÚengineÚstrÚreturnÚBaseImpl© )Úformats   "Úb/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pandas/io/parquet.pyÚ__annotate__r%   4   s   € ÷ Gñ G�sð G˜xñ Gó    c                óL  € V R8X  d   \        R4      p V R8X  d.   \        \        .pRpV F  p V! 4       u # 	  \        RV 24      hV R8X  d   \        4       # V R8X  d   \        4       # \        R	4      h  \         d%   pTR\	        T4      ,           ,          p Rp?Kt  Rp?ii ; i)
zreturn our implementationÚautozio.parquet.engineÚ z
 - NzÉUnable to find a usable engine; tried using: 'pyarrow', 'fastparquet'.
A suitable version of pyarrow or fastparquet is required for parquet support.
Trying to import the above resulted in these errors:ÚpyarrowÚfastparquetz.engine must be one of 'pyarrow', 'fastparquet')r   ÚPyArrowImplÚFastParquetImplÚImportErrorr   Ú
ValueError)r   Úengine_classesÚ
error_msgsÚengine_classÚerrs   &    r$   Ú
get_enginer4   4   s¸   € à�ÔÜÐ/Ó0ˆà�Ôä%¤Ð7ˆàˆ
Û*ˆLð1Ù#“~Ò%ñ +ô ðCð ˆlðó
ð 	
ð �ÔÜ‹}ÐØ	�=Ô	 ÜÓ Ð ä
ÐEÓ
FÐFøô% ô 1Ø˜g¬¨C«Õ0Õ0–
ûð1ús   ®A4Á4B#Á?BÂB#c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   Úpathz1FilePath | ReadBuffer[bytes] | WriteBuffer[bytes]Úfsr   Ústorage_optionsúStorageOptions | NoneÚmoder   Úis_dirÚboolr    zVtuple[FilePath | ReadBuffer[bytes] | WriteBuffer[bytes], IOHandles[bytes] | None, Any]r"   )r#   s   "r$   r%   r%   V   sD   € ÷ <'ñ <'Ø
;ð<'àð<'ð +ð<'ð ð	<'ð
 ð<'ðñ<'r&   c                óÆ  € \        V 4      pVe™   \        RRR7      p\        RRR7      pVe0   \        WP                  4      '       d   V'       d   \	        R4      hMKVe'   \        WP
                  P                  4      '       d   M!\        R\        V4      P                   24      h\        V4      '       dv   Vfr   Vf5   \        R4      p\        R4      p VP                  P                  V 4      w  rVf5   \        R4      pVP                  P                  ! V3/ T;'       g    / B w  rM+V'       d$   \!        V4      '       d   VR	8w  d   \        R
4      hRp	V'       g`   V'       gX   \        V\"        4      '       dB   \$        P&                  P)                  V4      '       g   \+        WSRVR7      p	RpV	P,                  pWYV3#   \        TP                  3 d     Lêi ; i)zFile handling for PyArrow.Nz
pyarrow.fsÚignore)ÚerrorsÚfsspecz8storage_options not supported with a pyarrow FileSystem.z9filesystem must be a pyarrow or fsspec FileSystem, not a r*   Úrbz8storage_options passed with buffer, or non-supported URLF©Úis_textr8   )r   r	   Ú
isinstanceÚ
FileSystemÚNotImplementedErrorÚspecÚAbstractFileSystemr/   ÚtypeÚ__name__r   Úfrom_uriÚ	TypeErrorÚArrowInvalidÚcoreÚ	url_to_fsr   r   Úosr6   Úisdirr   Úhandle)
r6   r7   r8   r:   r;   Úpath_or_handleÚpa_fsr@   ÚpaÚhandless
   &&&&&     r$   Ú_get_path_or_handlerW   V   s½  € ô $ DÓ)€NØ	‚~Ü*¨<ÀÔIˆÜ+¨H¸XÔFˆØÒ¤¨B×0@Ñ0@×!AÒ!AßÜ)ØNóð ð ð Ò¤J¨r·;±;×3QÑ3Q×$RÒ$RØäðÜ˜b›×*Ñ*Ð+ð-óð ô �^×$Ò$¨ªØÒ"Ü+¨IÓ6ˆBÜ.¨|Ó<ˆEðØ%*×%5Ñ%5×%>Ñ%>¸tÓ%DÑ"�ð Š:Ü/°Ó9ˆFØ!'§¡×!6Ò!6Øñ"Ø#2×#8Ð#8°bñ"ÑˆBø÷ 
¤&¨×"8Ò"8¸DÀD¼Lô ÐSÓTÐTà€GçßÜ�~¤s×+Ò+Ü—‘—‘˜n×-Ò-ô
 Ø¨%Àô
ˆð ˆØ Ÿ™ˆØ BÐ&Ð&øô7 ˜rŸ™Ð/ô Ùðús   ÃG ÇG ÇG c                  óH   € ] tR t^•t]R R l4       tR R ltR	R R lltRtR# )
r!   c               ó    € V ^8„  d   QhRRRR/# ©r   Údfr   r    ÚNoner"   )r#   s   "r$   r%   ÚBaseImpl.__annotate__—   s   € ÷ Lñ L˜yð L¨Tñ Lr&   c                	óH   € \        V \        4      '       g   \        R 4      hR# )z+to_parquet only supports IO with DataFramesN)rD   r   r/   )r[   s   &r$   Úvalidate_dataframeÚBaseImpl.validate_dataframe–   s    € ä˜"œi×(Ò(ÜÐJÓKÐKñ )r&   c               ó    € V ^8„  d   QhRRRR/# rZ   r"   )r#   s   "r$   r%   r]   ›   s   € ÷ (ñ (˜	ð (À4ñ (r&   c                	ó   € \        V 4      h©N©r
   )Úselfr[   r6   ÚcompressionÚkwargss   &&&&,r$   ÚwriteÚBaseImpl.write›   ó   € Ü! $Ó'Ð'r&   Nc               ó   € V ^8„  d   QhRR/# )r   r    r   r"   )r#   s   "r$   r%   r]   ž   s   € ÷ (ñ (°Iñ (r&   c                	ó   € \        V 4      hrc   rd   )re   r6   Úcolumnsrg   s   &&&,r$   ÚreadÚBaseImpl.readž   rj   r&   r"   rc   )	rJ   Ú
__module__Ú__qualname__Ú__firstlineno__Ústaticmethodr_   rh   rn   Ú__static_attributes__r"   r&   r$   r!   r!   •   s%   † ØôLó ðLõ(÷(ó (r&   r!   c                  ób   € ] tR t^¢tR R ltR	R R lltRR]P                  RRR3R R lltRt	R# )
r,   c               ó   € V ^8„  d   QhRR/# ©r   r    r\   r"   )r#   s   "r$   r%   ÚPyArrowImpl.__annotate__£   s   € ÷ 	ñ 	˜$ñ 	r&   c                	ó<   € \        R RR7       ^ RIp^ RIpWn        R# )r*   z(pyarrow is required for parquet support.©ÚextraN)r	   Úpyarrow.parquetÚ(pandas.core.arrays.arrow.extension_typesÚapi)re   r*   Úpandass   &  r$   Ú__init__ÚPyArrowImpl.__init__£   s   € Ü"ØÐGõ	
ó 	ó 	8àŽr&   Nc               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r   r[   r   r6   zFilePath | WriteBuffer[bytes]rf   r   Úindexúbool | Noner8   r9   Úpartition_colsúlist[str] | Noner    r\   r"   )r#   s   "r$   r%   rx   ®   sY   € ÷ @ ñ @ àð@ ð ,ð@ ð /ð	@ ð
 ð@ ð /ð@ ð )ð@ ð 
ñ@ r&   c           	     	óø  € V P                  V4       R VP                  R R4      /p	Ve   WIR&   V P                  P                  P                  ! V3/ V	B p
VP
                  '       dP   R\        P                  ! VP
                  4      /pV
P                  P                  p/ VCVCpV
P                  V4      p
\        VVVRVRJR7      w  rïp\        V\        P                  4      '       d€   \        VR4      '       dn   \        VP                   \"        \$        34      '       dH   \        VP                   \$        4      '       d   VP                   P'                  4       pMVP                   p Ve0   V P                  P(                  P*                  ! V
V3RVRVR	V/VB  M,V P                  P(                  P,                  ! V
V3RVR	V/VB  Ve   VP/                  4        R# R#   Te   TP/                  4        i i ; i)
ÚschemaNÚpreserve_indexÚPANDAS_ATTRSÚwb)r8   r:   r;   Únamerf   r…   Ú
filesystem)r_   Úpopr~   ÚTableÚfrom_pandasÚattrsÚjsonÚdumpsrˆ   ÚmetadataÚreplace_schema_metadatarW   rD   ÚioÚBufferedWriterÚhasattrrŒ   r   ÚbytesÚdecodeÚparquetÚwrite_to_datasetÚwrite_tableÚclose)re   r[   r6   rf   rƒ   r8   r…   r�   rg   Úfrom_pandas_kwargsÚtableÚdf_metadataÚexisting_metadataÚmerged_metadatarS   rV   s   &&&&&&&&,       r$   rh   ÚPyArrowImpl.write®   sí  € ð 	×Ñ Ô#à.6¸¿
¹
À8ÈTÓ8RÐ-SÐØÒØ38Ð/Ñ0à—‘—‘×*Ò*¨2ÑDÐ1CÑDˆà�8�8ˆ8Ø)¬4¯:ª:°b·h±hÓ+?Ð@ˆKØ %§¡× 5Ñ 5ÐØBÐ!2ÐB°kÐBˆOØ×1Ñ1°/ÓBˆEä.AØØØ+ØØ!¨Ð-ô/
Ñ+ˆ ô �~¤r×'8Ñ'8×9Ò9Ü˜¨×/Ò/Ü˜>×.Ñ.´´e°×=Ò=ä˜.×-Ñ-¬u×5Ò5Ø!/×!4Ñ!4×!;Ñ!;Ó!=‘à!/×!4Ñ!4�ð	 ØÒ)à—‘× Ñ ×1Ò1ØØ"ñð !,ðð $2ð	ð
  *ðð óð —‘× Ñ ×,Ò,ØØ"ñð !,ðð  *ð	ð
 òð Ò"Ø—‘–ñ #øˆwÒ"Ø—‘•ð #ús   Å+AG" Ç"G9c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   Údtype_backendúDtypeBackend | lib.NoDefaultr8   r9   Úto_pandas_kwargszdict[str, Any] | Noner    r   r"   )r#   s   "r$   r%   rx   ð   s4   € ÷ . ñ . ð
 4ð. ð /ð. ð 0ð. ð 
ñ. r&   c           	     	óf  € R VR&   \        VVVRR7      w  ršp V P                  P                  P                  ! V	3RVRVRV/VB p\	        4       ;_uu_ 4        \        RR\        4       \        VVVR	7      pR
R
R
4       VP                  P                  '       dT   RVP                  P                  9   d9   VP                  P                  R,          p\        P                  ! V4      Xn        XV
e   V
P                  4        # #   + '       g   i     L–; i  T
e   T
P                  4        i i ; i)TÚuse_pandas_metadatarA   )r8   r:   rm   r�   Úfiltersr>   úmake_block is deprecated)r¦   r¨   Ns   PANDAS_ATTRS)rW   r~   r›   Ú
read_tabler   r   r   r   rˆ   r”   r’   Úloadsr‘   rž   )re   r6   rm   r«   r¦   r8   r�   r¨   rg   rS   rV   Úpa_tableÚresultr¡   s   &&&&&&&&,     r$   rn   ÚPyArrowImpl.readð   s'  € ð )-ˆÐ$Ñ%ä.AØØØ+Øô	/
Ñ+ˆ ð	 Ø—x‘x×'Ñ'×2Ò2Øñàðð &ðð  ð	ð
 ñˆHô  ×!Õ!ÜØØ.Ü"ôô
 /ØØ"/Ø%5ô�÷ "ð �‰×'×'Ð'Ø" h§o¡o×&>Ñ&>Ô>Ø"*§/¡/×":Ñ":¸?Õ"K�KÜ#'§:¢:¨kÓ#:�F”LØàÒ"Ø—‘•ð #÷% "×!ûð$ Ò"Ø—‘•ð #ús*   ™?D Á DÁ8#D ÂAD ÄD	ÄD ÄD0©r~   ©ÚsnappyNNNN)
rJ   rp   rq   rr   r€   rh   r   Ú
no_defaultrn   rt   r"   r&   r$   r,   r,   ¢   s0   † õ	÷@ ðJ ØØ69·n±nØ15ØØ26÷. ó . r&   r,   c                  óB   € ] tR tRtR R ltR
R R lltRR R lltR	tR# )r-   i!  c               ó   € V ^8„  d   QhRR/# rw   r"   )r#   s   "r$   r%   ÚFastParquetImpl.__annotate__"  s   € ÷ ñ ˜$ñ r&   c                	ó,   € \        R RR7      pWn        R# )r+   z,fastparquet is required for parquet support.rz   N)r	   r~   )re   r+   s   & r$   r€   ÚFastParquetImpl.__init__"  s   € ô 1ØÐ!Oô
ˆð Žr&   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r[   r   rf   z*Literal['snappy', 'gzip', 'brotli'] | Noner8   r9   r    r\   r"   )r#   s   "r$   r%   r¸   *  s3   € ÷ 3ñ 3àð3ð @ð	3ð /ð3ð 
ñ3r&   c                	óì  aa	€ V P                  V4       R V9   d   Ve   \        R4      hR V9   d   VP                  R 4      pVe   RVR&   Ve   \        R4      h\	        V4      p\        V4      '       d   \        R4      o	V	V3R lVR&   MS'       d   \        R	4      h\        R
R7      ;_uu_ 4        V P                  P                  ! VV3RVRVR V/VB  RRR4       R#   + '       g   i     R# ; i)Úpartition_onNzYCannot use both partition_on and partition_cols. Use partition_cols for partitioning dataÚhiveÚfile_schemeú9filesystem is not implemented for the fastparquet engine.r@   c                ó\   <€ SP                   ! V R 3/ S;'       g    / B P                  4       # )r‹   )Úopen)r6   Ú_r@   r8   s   &&€€r$   Ú<lambda>Ú'FastParquetImpl.write.<locals>.<lambda>M  s/   ø€ °&·+²+Ø�dñ3Ø.×4Ð4°"ñ3ç‰d‹fð3r&   Ú	open_withz?storage_options passed with file object or non-fsspec file pathT)Úrecordrf   Úwrite_index)
r_   r/   rŽ   rF   r   r   r	   r   r~   rh   )
re   r[   r6   rf   rƒ   r…   r8   r�   rg   r@   s
   &&&&&&f&,@r$   rh   ÚFastParquetImpl.write*  s  ù€ ð 	×Ñ Ô#à˜VÔ#¨Ò(BÜðKóð ð ˜VÔ#Ø#ŸZ™Z¨Ó7ˆNàÒ%Ø$*ˆF�=Ñ!àÒ!Ü%ØKóð ô
 ˜dÓ#ˆÜ˜×ÒÜ/°Ó9ˆFõ#ˆF�;Ò÷ ÜØQóð ô  4×(Ö(Ø�H‰H�NŠNØØñð (ðð "ð	ð
 ,ðð ò÷ )×(×(Ò(ús   Â3%C"Ã"C3	c               ó$   € V ^8„  d   QhRRRRRR/# )r   r8   r9   r¨   údict | Noner    r   r"   )r#   s   "r$   r%   r¸   _  s*   € ÷ 7 ñ 7 ð
 /ð7 ð &ð7 ð 
ñ7 r&   c           	     	óš  € / pVP                  R \        P                  4      p	RVR&   V	\        P                  Jd   \        R4      hVe   \	        R4      hVe   \	        R4      h\        V4      pRp
\        V4      '       d8   \        R4      pVP                  ! VR3/ T;'       g    / B P                  VR	&   MV\        V\        4      '       dA   \        P                  P                  V4      '       g   \        VRRVR
7      p
V
P                   p V P"                  P$                  ! V3/ VB p\'        4       ;_uu_ 4        \)        RR\*        4       VP,                  ! RRVRV/VB uuRRR4       V
e   V
P/                  4        # #   + '       g   i     M; i T
e   T
P/                  4        R# R#   T
e   T
P/                  4        i i ; i)r¦   FÚpandas_nullszHThe 'dtype_backend' argument is not supported for the fastparquet engineNrÀ   z?to_pandas_kwargs is not implemented for the fastparquet engine.r@   rA   r7   rB   r>   r¬   rm   r«   r"   )rŽ   r   rµ   r/   rF   r   r   r	   rÂ   r7   rD   r   rP   r6   rQ   r   rR   r~   ÚParquetFiler   r   r   Ú	to_pandasrž   )re   r6   rm   r«   r8   r�   r¨   rg   Úparquet_kwargsr¦   rV   r@   Úparquet_files   &&&&&&&,     r$   rn   ÚFastParquetImpl.read_  s¸  € ð *,ˆØŸ
™
 ?´C·N±NÓCˆà).ˆ�~Ñ&Ø¤§¡Ó.Üð%óð ð Ò!Ü%ØKóð ð Ò'Ü%ØQóð ô ˜dÓ#ˆØˆÜ˜×ÒÜ/°Ó9ˆFà#)§;¢;¨t°TÑ#U¸o×>SÐ>SÐQSÑ#U×#XÑ#XˆN˜4Ò Ü˜œc×"Ò"¬2¯7©7¯=©=¸×+>Ò+>ô !Ø�d E¸?ôˆGð —>‘>ˆDð	 ØŸ8™8×/Ò/°ÑG¸ÑGˆLÜ×!Õ!ÜØØ.Ü"ôð
 $×-Ò-ñ Ø#ðØ-4ðØ8>ñ÷ "Ñ!ð Ò"Ø—‘•ð #÷ "×!úÐ!ð Ò"Ø—‘–ñ #øˆwÒ"Ø—‘•ð #ús$   Ä/F3 Å 'FÅ'
F3 ÆF	ÆF3 Æ3G
r²   r³   )NNNNN)rJ   rp   rq   rr   r€   rh   rn   rt   r"   r&   r$   r-   r-   !  s   † õ÷3÷j7 ó 7 r&   r-   r(   c               ó<   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRR/	# )r   r[   r   r6   z$FilePath | WriteBuffer[bytes] | Noner   r   rf   r   rƒ   r„   r8   r9   r…   r†   r�   r   r    zbytes | Noner"   )r#   s   "r$   r%   r%   ™  sm   € ÷ `ñ `Øð`à
.ð`ð ð`ð +ð	`ð
 ð`ð +ð`ð %ð`ð ð`ð ñ`r&   c                ó,  € \        V\        4      '       d   V.p\        V4      p	Vf   \        P                  ! 4       MTp
V	P
                  ! V V
3RVRVRVRVRV/VB  Vf3   \        V
\        P                  4      '       g   Q hV
P                  4       # R# )aü  
Write a DataFrame to the parquet format.

Parameters
----------
df : DataFrame
path : str, path object, file-like object, or None, default None
    String, path object (implementing ``os.PathLike[str]``), or file-like
    object implementing a binary ``write()`` function. If None, the result
    is returned as bytes. If a string, it will be used as Root Directory
    path when writing a partitioned dataset. The engine fastparquet does
    not accept file-like objects.
engine : {'auto', 'pyarrow', 'fastparquet'}, default 'auto'
    Parquet library to use. If 'auto', then the option
    ``io.parquet.engine`` is used. The default ``io.parquet.engine``
    behavior is to try 'pyarrow', falling back to 'fastparquet' if
    'pyarrow' is unavailable.

    When using the ``'pyarrow'`` engine and no storage options are provided
    and a filesystem is implemented by both ``pyarrow.fs`` and ``fsspec``
    (e.g. "s3://"), then the ``pyarrow.fs`` filesystem is attempted first.
    Use the filesystem keyword with an instantiated fsspec filesystem
    if you wish to use its implementation.
compression : {'snappy', 'gzip', 'brotli', 'lz4', 'zstd', None},
    default 'snappy'. Name of the compression to use. Use ``None``
    for no compression.
index : bool, default None
    If ``True``, include the dataframe's index(es) in the file output. If
    ``False``, they will not be written to the file.
    If ``None``, similar to ``True`` the dataframe's index(es)
    will be saved. However, instead of being saved as values,
    the RangeIndex will be stored as a range in the metadata so it
    doesn't require much space and is faster. Other indexes will
    be included as columns in the file output.
partition_cols : str or list, optional, default None
    Column names by which to partition the dataset.
    Columns are partitioned in the order they are given.
    Must be None if path is not a string.
storage_options : dict, optional
    Extra options that make sense for a particular storage connection, e.g.
    host, port, username, password, etc. For HTTP(S) URLs the key-value
    pairs are forwarded to ``urllib.request.Request`` as header options.
    For other URLs (e.g. starting with "s3://", and "gcs://") the
    key-value pairs are forwarded to ``fsspec.open``. Please see ``fsspec``
    and ``urllib`` for more details, and for more examples on storage
    options refer `here <https://pandas.pydata.org/docs/user_guide/io.html?
    highlight=storage_options#reading-writing-remote-files>`_.
filesystem : fsspec or pyarrow filesystem, default None
    Filesystem object to use when reading the parquet file. Only implemented
    for ``engine="pyarrow"``.

    .. versionadded:: 2.1.0

**kwargs
    Additional keyword arguments passed to the engine:

    * For ``engine="pyarrow"``: passed to :func:`pyarrow.parquet.write_table`
      or :func:`pyarrow.parquet.write_to_dataset` (when using partition_cols)
    * For ``engine="fastparquet"``: passed to :func:`fastparquet.write`

Returns
-------
bytes if no path argument is provided else None
Nrf   rƒ   r…   r8   r�   )rD   r   r4   r–   ÚBytesIOrh   Úgetvalue)r[   r6   r   rf   rƒ   r8   r…   r�   rg   ÚimplÚpath_or_bufs   &&&&&&&&,  r$   Ú
to_parquetrÙ   ™  s´   € ôV �.¤#×&Ò&Ø(Ð)ˆÜ�fÓ€DàAEÂ´·²´ÐSW€Kà‡J‚JØ
Øñ	ð  ð	ð ð		ð
 &ð	ð (ð	ð ð	ð ò	ð ‚|Ü˜+¤r§z¡z×2Ò2Ð2Ð2Ø×#Ñ#Ó%Ð%ár&   r   c               ó<   € V ^8„  d   QhRRRRRRRRR	R
RRRRRRRR/	# )r   r6   zFilePath | ReadBuffer[bytes]r   r   rm   r†   r8   r9   r¦   r§   r�   r   r«   z&list[tuple] | list[list[tuple]] | Noner¨   rË   r    r   r"   )r#   s   "r$   r%   r%   ý  sm   € ÷ kñ kØ
&ðkàðkð ðkð +ð	kð
 0ðkð ðkð 4ðkð "ðkð ñkr&   c                ól   € \        V4      p	\        V4       V	P                  ! V 3RVRVRVRVRVRV/VB # )aM  
Load a parquet object from the file path, returning a DataFrame.

The function automatically handles reading the data from a parquet file
and creates a DataFrame with the appropriate structure.

Parameters
----------
path : str, path object or file-like object
    String, path object (implementing ``os.PathLike[str]``), or file-like
    object implementing a binary ``read()`` function.
    The string could be a URL. Valid URL schemes include http, ftp, s3,
    gs, and file. For file URLs, a host is expected. A local file could be:
    ``file://localhost/path/to/table.parquet``.
    A file URL can also be a path to a directory that contains multiple
    partitioned parquet files. Both pyarrow and fastparquet support
    paths to directories as well as file URLs. A directory path could be:
    ``file://localhost/path/to/tables`` or ``s3://bucket/partition_dir``.
engine : {'auto', 'pyarrow', 'fastparquet'}, default 'auto'
    Parquet library to use. If 'auto', then the option
    ``io.parquet.engine`` is used. The default ``io.parquet.engine``
    behavior is to try 'pyarrow', falling back to 'fastparquet' if
    'pyarrow' is unavailable.

    When using the ``'pyarrow'`` engine and no storage options are provided
    and a filesystem is implemented by both ``pyarrow.fs`` and ``fsspec``
    (e.g. "s3://"), then the ``pyarrow.fs`` filesystem is attempted first.
    Use the filesystem keyword with an instantiated fsspec filesystem
    if you wish to use its implementation.
columns : list, default=None
    If not None, only these columns will be read from the file.
storage_options : dict, optional
    Extra options that make sense for a particular storage connection, e.g.
    host, port, username, password, etc. For HTTP(S) URLs the key-value
    pairs are forwarded to ``urllib.request.Request`` as header options.
    For other URLs (e.g. starting with "s3://", and "gcs://") the
    key-value pairs are forwarded to ``fsspec.open``. Please see ``fsspec``
    and ``urllib`` for more details, and for more examples on storage
    options refer `here <https://pandas.pydata.org/docs/user_guide/io.html?
    highlight=storage_options#reading-writing-remote-files>`_.
dtype_backend : {'numpy_nullable', 'pyarrow'}
    Back-end data type applied to the resultant :class:`DataFrame`
    (still experimental). If not specified, the default behavior
    is to not use nullable data types. If specified, the behavior
    is as follows:

    * ``"numpy_nullable"``: returns nullable-dtype-backed :class:`DataFrame`
    * ``"pyarrow"``: returns pyarrow-backed nullable
      :class:`ArrowDtype` :class:`DataFrame`

    .. versionadded:: 2.0

filesystem : fsspec or pyarrow filesystem, default None
    Filesystem object to use when reading the parquet file. Only implemented
    for ``engine="pyarrow"``.

    .. versionadded:: 2.1.0

filters : List[Tuple] or List[List[Tuple]], default None
    To filter out data.
    Filter syntax: [[(column, op, val), ...],...]
    where op is [==, =, >, >=, <, <=, !=, in, not in]
    The innermost tuples are transposed into a set of filters applied
    through an `AND` operation.
    The outer list combines these sets of filters through an `OR`
    operation.
    A single list of tuples can also be used, meaning that no `OR`
    operation between set of filters is to be conducted.

    Using this argument will NOT result in row-wise filtering of the final
    partitions unless ``engine="pyarrow"`` is also specified.  For
    other engines, filtering is only performed at the partition level, that is,
    to prevent the loading of some row-groups and/or files.

    .. versionadded:: 2.1.0

to_pandas_kwargs : dict | None, default None
    Keyword arguments to pass through to :func:`pyarrow.Table.to_pandas`
    when ``engine="pyarrow"``.

    .. versionadded:: 3.0.0

**kwargs
    Additional keyword arguments passed to the engine:

    * For ``engine="pyarrow"``: passed to :func:`pyarrow.parquet.read_table`
    * For ``engine="fastparquet"``: passed to
      :meth:`fastparquet.ParquetFile.to_pandas`

Returns
-------
DataFrame
    DataFrame based on parquet file.

See Also
--------
DataFrame.to_parquet : Create a parquet object that serializes a DataFrame.

Examples
--------
>>> original_df = pd.DataFrame({"foo": range(5), "bar": range(5, 10)})
>>> original_df
   foo  bar
0    0    5
1    1    6
2    2    7
3    3    8
4    4    9
>>> df_parquet_bytes = original_df.to_parquet()
>>> from io import BytesIO
>>> restored_df = pd.read_parquet(BytesIO(df_parquet_bytes))
>>> restored_df
   foo  bar
0    0    5
1    1    6
2    2    7
3    3    8
4    4    9
>>> restored_df.equals(original_df)
True
>>> restored_bar = pd.read_parquet(BytesIO(df_parquet_bytes), columns=["bar"])
>>> restored_bar
    bar
0    5
1    6
2    7
3    8
4    9
>>> restored_bar.equals(original_df[["bar"]])
True

The function uses `kwargs` that are passed directly to the engine.
In the following example, we use the `filters` argument of the pyarrow
engine to filter the rows of the DataFrame.

Since `pyarrow` is the default engine, we can omit the `engine` argument.
Note that the `filters` argument is implemented by the `pyarrow` engine,
which can benefit from multithreading and also potentially be more
economical in terms of memory.

>>> sel = [("foo", ">", 2)]
>>> restored_part = pd.read_parquet(BytesIO(df_parquet_bytes), filters=sel)
>>> restored_part
    foo  bar
0    3    8
1    4    9
rm   r«   r8   r¦   r�   r¨   )r4   r   rn   )
r6   r   rm   r8   r¦   r�   r«   r¨   rg   r×   s
   &&&&&&&&, r$   Úread_parquetrÜ   ü  so   € ô@ �fÓ€DÜ˜Ô&à�9Š9Øñ	àð	ð ð	ð (ð		ð
 $ð	ð ð	ð *ð	ð ñ	ð 	r&   )NrA   F)Nr(   r´   NNNN)2Ú__doc__Ú
__future__r   r–   r’   rP   Útypingr   r   r   Úwarningsr   r   Úpandas._libsr   Úpandas.compat._optionalr	   Úpandas.errorsr
   r   Úpandas.util._decoratorsr   Úpandas.util._validatorsr   r   r   r   Úpandas.io._utilr   Úpandas.io.commonr   r   r   r   r   Úpandas._typingr   r   r   r   r   r   r4   rW   r!   r,   r-   rÙ   rµ   rÜ   r"   r&   r$   Ú<module>ré      sÍ   ðÙ å "ã 	Û Û 	÷ñ ÷
õ
 Ý >÷õ /Ý 7÷õ
 2÷õ ÷ ÷÷ õG÷D<'÷~
(ñ 
(ô| �(ô | ô~u �hô u ÷p`ñF ˆHÓð Ø $Ø-1Ø25·.±.ØØ6:Ø$(ökó òkr&   