ó
    Ñ]j…_  ã                  ó  • S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	r	  SSK
JrJr  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJrJr  SSKJr  SSKJrJrJ r J!r!J"r"  \(       a  SSK#J$r$J%r%J&r&J'r'J(r(J)r)  SS jr*   S           SS jjr+ " S S5      r, " S S\,5      r- " S S\,5      r.       S                 SS jjr/\" S5      SSS\R`                  SSS4                 S S jj5       r1g)!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ÚWriteBufferÚBaseImplc                ó2  • U S:X  a  [        S5      n U S:X  a-  [        [        /nSnU H  n U" 5       s  $    [        SU 35      eU S:X  a
  [        5       $ U S:X  a
  [        5       $ [        S	5      e! [         a  nUS[	        U5      -   -  n SnAMi  SnAff = f)
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ÚImportErrorÚstrÚ
ValueError)ÚengineÚengine_classesÚ
error_msgsÚengine_classÚerrs        ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/io/parquet.pyÚ
get_enginer.   4   s¸   € à�ÓÜÐ/Ó0ˆà�Óä%¤Ð7ˆàˆ
Û*ˆLð1Ù#“~Ò%ñ +ô ðCð ˆlðó
ð 	
ð �ÓÜ‹}ÐØ	�=Ó	 ÜÓ Ð ä
ÐEÓ
FÐFøô% ó 1Ø˜g¬¨C«Ñ0Ñ0–
ûð1ús   ¬A0Á0
BÁ:BÂBc                óŽ  • [        U 5      nUb�  [        SSS9n[        SSS9nUb-  [        XR                  5      (       a  U(       a  [	        S5      eOIUb%  [        XR
                  R                  5      (       a  O![        S[        U5      R                   35      e[        U5      (       aq  Ucn  Uc4  [        S5      n[        S5      n UR                  R                  U 5      u  pUc3  [        S5      nUR                  R                  " U40 U=(       d    0 D6u  pO(U(       a!  [!        U5      (       a  US	:w  a  [        S
5      eSn	U(       dY  U(       dR  [        U["        5      (       a=  [$        R&                  R)                  U5      (       d  [+        XSSUS9n	SnU	R,                  nXYU4$ ! [        UR                  4 a     NÝf = f)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_textÚstorage_options)r   r
   Ú
isinstanceÚ
FileSystemÚNotImplementedErrorÚspecÚAbstractFileSystemr'   ÚtypeÚ__name__r   Úfrom_uriÚ	TypeErrorÚArrowInvalidÚcoreÚ	url_to_fsr   r&   ÚosÚpathÚisdirr   Úhandle)
rD   Úfsr6   ÚmodeÚis_dirÚpath_or_handleÚpa_fsr2   ÚpaÚhandless
             r-   Ú_get_path_or_handlerN   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°bñ"ÑˆBøö 
¤&¨×"8Ñ"8¸DÀD»Lô ÐSÓTÐTà€GæÞÜ�~¤s×+Ñ+Ü—‘—‘˜n×-Ñ-ô
 Ø¨%Àñ
ˆð ˆØ Ÿ™ˆØ BÐ&Ð&øô7 ˜rŸ™Ð/ó Ùðús   Ã	F+ Æ+GÇGc                  ó@   • \ rS rSr\SS j5       rSS jrSS	S jjrSrg)
r   é•   c                óD   • [        U [        5      (       d  [        S5      eg )Nz+to_parquet only supports IO with DataFrames)r7   r   r'   )Údfs    r-   Úvalidate_dataframeÚBaseImpl.validate_dataframe–   s    € ä˜"œi×(Ñ(ÜÐJÓKÐKð )ó    c                ó   • [        U 5      e©N©r   )ÚselfrR   rD   ÚcompressionÚkwargss        r-   ÚwriteÚBaseImpl.write›   ó   € Ü! $Ó'Ð'rU   Nc                ó   • [        U 5      erW   rX   )rY   rD   Úcolumnsr[   s       r-   ÚreadÚBaseImpl.readž   r^   rU   © )rR   r   ÚreturnÚNonerW   )rd   r   )	r=   Ú
__module__Ú__qualname__Ú__firstlineno__ÚstaticmethodrS   r\   ra   Ú__static_attributes__rc   rU   r-   r   r   •   s%   † ØóLó ðLô(÷(ñ (rU   c                  óŒ   • \ rS rSrSS jr     S             S	S jjrSS\R                  SSS4       S
S jjrSr	g)r#   é¢   c                ó4   • [        SSS9  SS KnSS KnXl        g )Nr!   z(pyarrow is required for parquet support.©Úextrar   )r
   Úpyarrow.parquetÚ(pandas.core.arrays.arrow.extension_typesÚapi)rY   r!   Úpandass      r-   Ú__init__ÚPyArrowImpl.__init__£   s   € Ü"ØÐGò	
ó 	ó 	8à�rU   Nc                óÖ  • U R                  U5        SUR                  SS 5      0n	Ub  XIS'   U R                  R                  R                  " U40 U	D6n
UR
                  (       aO  S[        R                  " UR
                  5      0nU
R                  R                  n0 UEUEnU
R                  U5      n
[        UUUSUS LS9u  pïn[        U[        R                  5      (       a|  [        US5      (       ak  [        UR                   ["        [$        45      (       aF  [        UR                   [$        5      (       a  UR                   R'                  5       nOUR                   n Ub-  U R                  R(                  R*                  " U
U4UUUS.UD6  O+U R                  R(                  R,                  " U
U4UUS.UD6  Ub  UR/                  5         g g ! Ub  UR/                  5         f f = f)	NÚschemaÚpreserve_indexÚPANDAS_ATTRSÚwb)r6   rH   rI   Úname)rZ   Úpartition_colsÚ
filesystem)rZ   r}   )rS   Úpoprr   ÚTableÚfrom_pandasÚattrsÚjsonÚdumpsrw   ÚmetadataÚreplace_schema_metadatarN   r7   ÚioÚBufferedWriterÚhasattrr{   r&   ÚbytesÚdecodeÚparquetÚwrite_to_datasetÚwrite_tableÚclose)rY   rR   rD   rZ   Úindexr6   r|   r}   r[   Úfrom_pandas_kwargsÚtableÚdf_metadataÚexisting_metadataÚmerged_metadatarJ   rM   s                   r-   r\   ÚPyArrowImpl.write®   sÖ  € ð 	×Ñ Ô#à.6¸¿
¹
À8ÈTÓ8RÐ-SÐØÑØ38Ð/Ñ0à—‘—‘×*Ò*¨2ÑDÐ1CÑDˆà�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ØØ"ðð !,Ø#1Ø)ñð óð —‘× Ñ ×,Ò,ØØ"ðð !,Ø)ñ	ð
 òð Ñ"Ø—‘•ð #øˆwÑ"Ø—‘•ð #ús   Å"AG ÇG(c                ó2  • SUS'   [        UUUSS9u  pšn U R                  R                  R                  " U	4UUUS.UD6n[	        5          [        SS[        5        [        UUUS9nS S S 5        UR                  R                  (       aN  S	UR                  R                  ;   a4  UR                  R                  S	   n[        R                  " U5      Wl        WU
b  U
R                  5         $ $ ! , (       d  f       N�= f! U
b  U
R                  5         f f = f)
NTÚuse_pandas_metadatar3   )r6   rH   )r`   r}   Úfiltersr0   úmake_block is deprecated)Údtype_backendÚto_pandas_kwargss   PANDAS_ATTRS)rN   rr   r‹   Ú
read_tabler   r   r   r   rw   r„   r‚   Úloadsr�   rŽ   )rY   rD   r`   r˜   rš   r6   r}   r›   r[   rJ   rM   Úpa_tableÚresultr’   s                 r-   ra   ÚPyArrowImpl.readð   s  € ð )-ˆÐ$Ñ%ä.AØØØ+Øñ	/
Ñ+ˆ ð	 Ø—x‘x×'Ñ'×2Ò2ØðàØ%Øñ	ð
 ñˆHô  Õ!ÜØØ.Ü"ôô
 /ØØ"/Ø%5ñ�÷ "ð �‰×'×'Ø" h§o¡o×&>Ñ&>Ó>Ø"*§/¡/×":Ñ":¸?Ñ"K�KÜ#'§:¢:¨kÓ#:�F”LØàÑ"Ø—‘•ð #÷% "Õ!ûð$ Ñ"Ø—‘•ð #ús$   –5D  ÁC/Á(A2D  Ã/
C=Ã9D  Ä D©rr   ©rd   re   ©ÚsnappyNNNN)rR   r   rD   zFilePath | WriteBuffer[bytes]rZ   r   r�   úbool | Noner6   úStorageOptions | Noner|   úlist[str] | Nonerd   re   )rš   úDtypeBackend | lib.NoDefaultr6   r¦   r›   zdict[str, Any] | Nonerd   r   )
r=   rf   rg   rh   rt   r\   r	   Ú
no_defaultra   rj   rc   rU   r-   r#   r#   ¢   s´   † ô	ð 2:Ø!Ø15Ø+/Øð@ àð@ ð ,ð@ ð /ð	@ ð
 ð@ ð /ð@ ð )ð@ ð 
õ@ ðJ ØØ69·n±nØ15ØØ26ð. ð
 4ð. ð /ð. ð 0ð. ð 
÷. ð . rU   r#   c                  óf   • \ rS rSrSS jr     S       S	S jjr     S
     SS jjrSrg)r$   i!  c                ó$   • [        SSS9nXl        g )Nr"   z,fastparquet is required for parquet support.rn   )r
   rr   )rY   r"   s     r-   rt   ÚFastParquetImpl.__init__"  s   € ô 1ØÐ!Oñ
ˆð �rU   Nc                ó¼  ^^	• U R                  U5        SU;   a  Ub  [        S5      eSU;   a  UR                  S5      nUb  SUS'   Ub  [        S5      e[	        U5      n[        U5      (       a  [        S5      m	U	U4S jUS'   OT(       a  [        S	5      e[        S
S9   U R                  R                  " UU4UUUS.UD6  S S S 5        g ! , (       d  f       g = f)NÚpartition_onzYCannot use both partition_on and partition_cols. Use partition_cols for partitioning dataÚhiveÚfile_schemeú9filesystem is not implemented for the fastparquet engine.r2   c                óZ   >• TR                   " U S40 T=(       d    0 D6R                  5       $ )Nrz   )Úopen)rD   Ú_r2   r6   s     €€r-   Ú<lambda>Ú'FastParquetImpl.write.<locals>.<lambda>M  s,   ø€ °&·+²+Ø�dñ3Ø.×4°"ñ3ç‰d‹fð3rU   Ú	open_withz?storage_options passed with file object or non-fsspec file pathT)Úrecord)rZ   Úwrite_indexr®   )
rS   r'   r~   r9   r   r   r
   r   rr   r\   )
rY   rR   rD   rZ   r�   r|   r6   r}   r[   r2   s
         `  @r-   r\   ÚFastParquetImpl.write*  sù   ù€ ð 	×Ñ Ô#à˜VÓ#¨Ñ(BÜðKóð ð ˜VÓ#Ø#ŸZ™Z¨Ó7ˆNàÑ%Ø$*ˆF�=Ñ!àÑ!Ü%ØKóð ô
 ˜dÓ#ˆÜ˜×ÑÜ/°Ó9ˆFõ#ˆF�;Òö ÜØQóð ô  4Ó(Ø�H‰H�NŠNØØðð (Ø!Ø+ñð ò÷ )×(Ö(ús   Â!#CÃ
Cc                ób  • 0 nUR                  S[        R                  5      n	SUS'   U	[        R                  La  [        S5      eUb  [	        S5      eUb  [	        S5      e[        U5      nS n
[        U5      (       a6  [        S5      nUR                  " US40 U=(       d    0 D6R                  US	'   OQ[        U[        5      (       a<  [        R                  R                  U5      (       d  [        USSUS
9n
U
R                   n U R"                  R$                  " U40 UD6n['        5          [)        SS[*        5        UR,                  " SX#S.UD6sS S S 5        U
b  U
R/                  5         $ $ ! , (       d  f       O= f U
b  U
R/                  5         g g ! U
b  U
R/                  5         f f = f)Nrš   FÚpandas_nullszHThe 'dtype_backend' argument is not supported for the fastparquet enginer±   z?to_pandas_kwargs is not implemented for the fastparquet engine.r2   r3   rG   r4   r0   r™   )r`   r˜   rc   )r~   r	   r©   r'   r9   r   r   r
   r³   rG   r7   r&   rC   rD   rE   r   rF   rr   ÚParquetFiler   r   r   Ú	to_pandasrŽ   )rY   rD   r`   r˜   r6   r}   r›   r[   Úparquet_kwargsrš   rM   r2   Úparquet_files                r-   ra   ÚFastParquetImpl.read_  sª  € ð *,ˆØŸ
™
 ?´C·N±NÓCˆà).ˆ�~Ñ&Ø¤§¡Ò.Üð%óð ð Ñ!Ü%ØKóð ð Ñ'Ü%ØQóð ô ˜dÓ#ˆØˆÜ˜×ÑÜ/°Ó9ˆFà#)§;¢;¨t°TÑ#U¸o×>SÐQSÑ#U×#XÑ#XˆN˜4Ò Ü˜œc×"Ñ"¬2¯7©7¯=©=¸×+>Ñ+>ô !Ø�d E¸?ñˆGð —>‘>ˆDð	 ØŸ8™8×/Ò/°ÑG¸ÑGˆLÜÕ!ÜØØ.Ü"ôð
 $×-Ò-ð Ø#ñØ8>ñ÷ "Ð!ð Ñ"Ø—‘•ð #÷ "Õ!úÐ!ð Ñ"Ø—‘•ð #øˆwÑ"Ø—‘•ð #ús$   Ä'F Ä.%E1Å	F Å1
E?Å;F ÆF.r¡   r¢   r£   )rR   r   rZ   z*Literal['snappy', 'gzip', 'brotli'] | Noner6   r¦   rd   re   )NNNNN)r6   r¦   r›   údict | Nonerd   r   )r=   rf   rg   rh   rt   r\   ra   rj   rc   rU   r-   r$   r$   !  s€   † ôð CKØØØ15Øð3àð3ð @ð	3ð /ð3ð 
õ3ðp ØØ15ØØ(,ð7 ð
 /ð7 ð &ð7 ð 
÷7 ð 7 rU   r$   r   c           	     ó  • [        U[        5      (       a  U/n[        U5      n	Uc  [        R                  " 5       OUn
U	R
                  " U U
4UUUUUS.UD6  Uc1  [        U
[        R                  5      (       d   eU
R                  5       $ g)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
N)rZ   r�   r|   r6   r}   )r7   r&   r.   r†   ÚBytesIOr\   Úgetvalue)rR   rD   r(   rZ   r�   r6   r|   r}   r[   ÚimplÚpath_or_bufs              r-   Ú
to_parquetrÈ   ™  s˜   € ôV �.¤#×&Ñ&Ø(Ð)ˆÜ�fÓ€DàAEÁ´·²´ÐSW€Kà‡J‚JØ
Øð	ð  ØØ%Ø'Øñ	ð ò	ð �|Ü˜+¤r§z¡z×2Ñ2Ð2Ð2Ø×#Ñ#Ó%Ð%àrU   rs   c           
     ób   • [        U5      n	[        U5        U	R                  " U 4UUUUUUS.UD6$ )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
)r`   r˜   r6   rš   r}   r›   )r.   r   ra   )
rD   r(   r`   r6   rš   r}   r˜   r›   r[   rÆ   s
             r-   Úread_parquetrÊ   ü  sL   € ô@ �fÓ€DÜ˜Ô&à�9Š9Øð	àØØ'Ø#ØØ)ñ	ð ñ	ð 	rU   )r(   r&   rd   r   )Nr3   F)rD   z1FilePath | ReadBuffer[bytes] | WriteBuffer[bytes]rG   r   r6   r¦   rH   r&   rI   Úboolrd   zVtuple[FilePath | ReadBuffer[bytes] | WriteBuffer[bytes], IOHandles[bytes] | None, Any])Nr   r¤   NNNN)rR   r   rD   z$FilePath | WriteBuffer[bytes] | Noner(   r&   rZ   r   r�   r¥   r6   r¦   r|   r§   r}   r   rd   zbytes | None)rD   zFilePath | ReadBuffer[bytes]r(   r&   r`   r§   r6   r¦   rš   r¨   r}   r   r˜   z&list[tuple] | list[list[tuple]] | Noner›   rÂ   rd   r   )2Ú__doc__Ú
__future__r   r†   r‚   rC   Útypingr   r   r   Úwarningsr   r   Úpandas._libsr	   Úpandas.compat._optionalr
   Úpandas.errorsr   r   Úpandas.util._decoratorsr   Úpandas.util._validatorsr   rs   r   r   Úpandas.io._utilr   Úpandas.io.commonr   r   r   r   r   Úpandas._typingr   r   r   r   r   r   r.   rN   r   r#   r$   rÈ   r©   rÊ   rc   rU   r-   Ú<module>rØ      så  ðÙ å "ã 	Û Û 	÷ñ ÷
õ
 Ý >÷õ /Ý 7÷õ
 2÷õ ö ÷÷ ôGðJ .2ØØð<'Ø
;ð<'àð<'ð +ð<'ð ð	<'ð
 ð<'ðõ<'÷~
(ñ 
(ô| �(ô | ô~u �hô u ðt 26ØØ-5ØØ-1Ø'+Øð`Øð`à
.ð`ð ð`ð +ð	`ð
 ð`ð +ð`ð %ð`ð ð`ð õ`ñF ˆHÓð Ø $Ø-1Ø25·.±.ØØ6:Ø$(ðkØ
&ðkàðkð ðkð +ð	kð
 0ðkð ðkð 4ðkð "ðkð ôkó ñkrU   