Ë
    ômxi„Ï  ã                   óX  — d Z ddlZddlmZ ddlmZ ddlZddlZddl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mZmZ ddlZddlmZ dd	lmZ dd
lm Z m!Z!m"Z"m#Z#m$Z$ 	 ddl%Z%dZ&	 ddl(Z(dZ)e
jT                  jW                  d«      e
jT                  jW                  d«      gZ, e
jZ                   e
j\                  de
jT                  j_                  e) xs  edd¬«      dk(  d¬«      e
jT                  ja                   e«       dd¬«      g¬«       e
j\                  de
jT                  j_                  e& d¬«      ¬«      g¬«      d„ «       Z1e
jZ                  d„ «       Z2e
jZ                  d„ «       Z3e
jZ                  d„ «       Z4e
jZ                  d„ «       Z5e
jZ                  d „ «       Z6 e
jZ                  ej                  jo                  ejp                  jr                  «      ej                  jo                  ejp                  jt                  «      ej                  jo                  ejp                  jv                  «      ej                  jy                  d!d"«      ej                  jy                  d#d"«      ej                  jy                  d$d"«      ej                  jy                  d%d"«      g¬«      d&„ «       Z=	 	 	 	 	 	 	 	 	 d:d'„Z>d(„ Z?d)„ Z@d*„ ZAd+„ ZBd,„ ZCd-„ ZDd.„ ZEd/„ ZFd0„ ZGd1„ ZH G d2„ d3«      ZI G d4„ d5eI«      ZJ G d6„ d7eI«      ZK G d8„ d9eI«      ZLy# e'$ r dZ&Y �Œ°w xY w# e'$ r dZ)Y �Œ·w xY w);z test parquet compat é    N)ÚDecimal)ÚBytesIO)Úusing_copy_on_writeÚusing_string_dtype)Ú_get_option)Úis_platform_windows)Úpa_version_under11p0Úpa_version_under13p0Úpa_version_under15p0Úpa_version_under19p0Úpa_version_under20p0)ÚVersion)ÚFastParquetImplÚPyArrowImplÚ
get_engineÚread_parquetÚ
to_parquetTFz2ignore:DataFrame._data is deprecated:FutureWarningz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningÚfastparquetúmode.data_manager©ÚsilentÚarrayz4fastparquet is not installed or ArrayManager is used©ÚreasonúTODO(infer_string) fastparquet©r   Ústrict©ÚmarksÚpyarrowúpyarrow is not installed)Úparamsc                 ó   — | j                   S ©N©Úparam©Úrequests    úS/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/tests/io/test_parquet.pyÚenginer*   @   s   € ð4 �=‰=Ðó    c                  ó:   — t         st        j                  d«       y)Nr!   r    )Ú_HAVE_PYARROWÚpytestÚskip© r+   r)   Úpar1   ]   s   € åÜ�‰Ð.Ô/Ør+   c                 óú   — t         st        j                  d«       n%t        dd¬«      dk(  rt        j                  d«       t	        «       r0| j                  t        j                  j                  dd¬	«      «       y
)Nzfastparquet is not installedr   Tr   r   z.ArrayManager is not supported with fastparquetr   Fr   r   )Ú_HAVE_FASTPARQUETr.   r/   r   r   ÚapplymarkerÚmarkÚxfailr'   s    r)   Úfpr7   d   s`   € åÜ�‰Ð2Õ3Ü	Ð(°Ô	6¸'Ò	AÜ�‰ÐDÔEÜÔØ×ÑÜ�K‰K×ÑÐ%EÈeÐÓTô	
ð r+   c                  ód   — t        j                  g d¢ddœt        j                  ddg«      ¬«      S )N©é   é   é   Úfoo©ÚAÚBr?   r@   ©Úcolumns)ÚpdÚ	DataFrameÚIndexr0   r+   r)   Ú	df_compatrF   q   s%   € ä�<‰<ši¨eÑ4¼b¿h¹hÈÈSÀzÓ>RÔSÐSr+   c            
      óÎ   — t        j                  t        d«      t        t        dd«      «      t	        j
                  ddd¬«      g d¢t        j                  d	d
¬«      dœ«      } | S )NÚabcr:   é   ç      @ç      @Úfloat64©Údtype©TFTÚ20130101r<   ©Úperiods)ÚaÚbÚdÚeÚf)rC   rD   ÚlistÚrangeÚnpÚarangeÚ
date_range)Údfs    r)   Údf_cross_compatr^   v   sR   € ä	�‰ä�e“Ü”e˜A˜q“kÓ"ä—‘˜3 ¨9Ô5Ú$Ü—‘˜z°1Ô5ñ
	
ó
€Bð €Ir+   c                  óÜ  — t        j                  t        d«      dt        j                  dgg d¢g d¢g d¢t        t        dd«      «      t        j                  d	d
«      j                  d«      t        j                  ddd¬«      dt        j                  dgg d¢t        j                  dd	¬«      t        j                  d«      t         j                  t        j                  d«      gdœ«      S )NrH   rS   Úc©rS   Nr`   )ó   fooó   bars   baz©r=   ÚbarÚbazr:   rI   r<   é   Úu1rJ   rK   rL   rM   ç       @ç      @rO   rP   rQ   Ú20130103)ÚstringÚstring_with_nanÚstring_with_noneÚbytesÚunicodeÚintÚuintÚfloatÚfloat_with_nanÚboolÚdatetimeÚdatetime_with_nat)rC   rD   rX   rZ   ÚnanrY   r[   Úastyper\   Ú	TimestampÚNaTr0   r+   r)   Údf_fullr|   ˆ   s¯   € ä�<‰<ä˜5“kØ #¤R§V¡V¨SÐ1Ú 0Ú-Ú,Üœ˜a ›Ó$Ü—I‘I˜a “O×*Ñ*¨4Ó0Ü—Y‘Y˜s C¨yÔ9Ø"¤B§F¡F¨CÐ0Ú'ÜŸ™ j¸!Ô<ä—‘˜ZÓ(Ü—‘Ü—‘˜ZÓ(ð"ñ	
óð r+   z2019-01-04T16:41:24+0200z%Y-%m-%dT%H:%M:%S%zz2019-01-04T16:41:24+0215z2019-01-04T16:41:24-0200z2019-01-04T16:41:24-0215c                 ó   — | j                   S r$   r%   r'   s    r)   Útimezone_aware_date_listr~       s   € ð �=‰=Ðr+   c
                 óà   ‡ ‡‡‡‡‡‡‡— ‰xs ddiŠ‰xs i Š‰€‰ Š|r
|‰d<   |‰d<   ˆˆˆˆ ˆˆˆˆfd„}
‰€&t        j                  «       5 Š |
|	«       ddd«       y |
|	«       y# 1 sw Y   yxY w)a  Verify parquet serializer and deserializer produce the same results.

    Performs a pandas to disk and disk to pandas round trip,
    then compares the 2 resulting DataFrames to verify equality.

    Parameters
    ----------
    df: Dataframe
    engine: str, optional
        'pyarrow' or 'fastparquet'
    path: str, optional
    write_kwargs: dict of str:str, optional
    read_kwargs: dict of str:str, optional
    expected: DataFrame, optional
        Expected deserialization result, otherwise will be equal to `df`
    check_names: list of str, optional
        Closed set of column names to be compared
    check_like: bool, optional
        If True, ignore the order of index & columns.
    repeat: int, optional
        How many times to repeat the test
    ÚcompressionNr*   c                 ó¾   •— t        | «      D ]N  } ‰j                  ‰fi ‰
¤Ž t        ‰fi ‰	¤Ž}d‰v rd ‰j                  d<   t	        j
                  ‰|‰‰‰¬«       ŒP y )Nrm   ©r:   rm   )Úcheck_namesÚ
check_likeÚcheck_dtype)rY   r   r   ÚlocÚtmÚassert_frame_equal)ÚrepeatÚ_Úactualr…   r„   rƒ   r]   ÚexpectedÚpathÚread_kwargsÚwrite_kwargss      €€€€€€€€r)   Úcomparez!check_round_trip.<locals>.compareÛ   sl   ø€ Ü�v“ò 	ˆAØˆB�M‰M˜$Ñ/ ,Ò/Ü! $Ñ6¨+Ñ6ˆFà  HÑ,Ø59�—‘Ð1Ñ2Ü×!Ñ!ØØØ'Ø%Ø'öñ	r+   )r‡   Úensure_clean)r]   r*   r�   r�   rŽ   rŒ   rƒ   r„   r…   r‰   r�   s   ` ```````  r)   Úcheck_round_tripr’   ¯   sˆ   ÿ€ ðD  Ò8 M°4Ð#8€LØÒ# €KàÐØˆáØ!'ˆ�XÑØ &ˆ�HÑ÷ó ð €|Ü�_‰_Óð 	 $Ù�FŒO÷	ð 	ñ 	��÷	ð 	ús   Á		A$Á$A-c                 ó€   — ddl m} |j                  | d¬«      }|j                  j                  j                  |k(  sJ ‚y)zÂCheck partitions of a parquet file are as expected.

    Parameters
    ----------
    path: str
        Path of the dataset.
    expected: iterable of str
        Expected partition names.
    r   NÚhive)Úpartitioning)Úpyarrow.datasetÚdatasetr•   ÚschemaÚnames)r�   rŒ   Údsr—   s       r)   Úcheck_partition_namesr›   ñ   s9   € õ !à�j‰j˜¨FˆjÓ3€GØ×Ñ×&Ñ&×,Ñ,°Ò8Ð8Ñ8r+   c                 ó‚   — d}t        j                  t        |¬«      5  t        | dd«       d d d «       y # 1 sw Y   y xY w)Nz.engine must be one of 'pyarrow', 'fastparquet'©Úmatchr=   re   )r.   ÚraisesÚ
ValueErrorr’   )rF   Úmsgs     r)   Útest_invalid_enginer¢     s6   € Ø
:€CÜ	�‰”z¨Ô	-ñ 2Ü˜ E¨5Ô1÷2÷ 2ñ 2ús   ž5µ>c                 óÀ   — |r&t         s | j                  j                  d«      | _        t        j                  dd«      5  t        | «       d d d «       y # 1 sw Y   y xY w)NÚstrúio.parquet.enginer    )r   rB   ry   rC   Úoption_contextr’   )rF   r1   Úusing_infer_strings      r)   Útest_options_pyr¨     sO   € áÕ"6Ø%×-Ñ-×4Ñ4°UÓ;ˆ	Ôä	×	Ñ	Ð.°	Ó	:ñ $Ü˜Ô#÷$÷ $ñ $ús   ¿AÁAc                 óp   — t        j                  dd«      5  t        | «       d d d «       y # 1 sw Y   y xY w)Nr¥   r   ©rC   r¦   r’   )rF   r7   s     r)   Útest_options_fpr«     s2   € ô 
×	Ñ	Ð.°Ó	>ñ $Ü˜Ô#÷$÷ $ñ $úó   —,¬5c                 óp   — t        j                  dd«      5  t        | «       d d d «       y # 1 sw Y   y xY w)Nr¥   Úautorª   )rF   r7   r1   s      r)   Útest_options_autor¯     s2   € ô 
×	Ñ	Ð.°Ó	7ñ $Ü˜Ô#÷$÷ $ñ $úr¬   c                 ó^  — t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚t	        j
                  dd«      5  t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚	 d d d «       t	        j
                  dd«      5  t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚	 d d d «       t	        j
                  dd«      5  t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚t        t        d«      t        «      sJ ‚	 d d d «       y # 1 sw Y   ŒìxY w# 1 sw Y   Œ‡xY w# 1 sw Y   y xY w)Nr    r   r¥   r®   )Ú
isinstancer   r   r   rC   r¦   )r7   r1   s     r)   Útest_options_get_enginer²     sq  € Ü”j Ó+¬[Ô9Ð9Ð9Ü”j Ó/´ÔAÐAÐAä	×	Ñ	Ð.°	Ó	:ñ FÜœ* VÓ,¬kÔ:Ð:Ð:Üœ* YÓ/´Ô=Ð=Ð=Üœ* ]Ó3´_ÔEÐEÑE÷Fô
 
×	Ñ	Ð.°Ó	>ñ FÜœ* VÓ,¬oÔ>Ð>Ð>Üœ* YÓ/´Ô=Ð=Ð=Üœ* ]Ó3´_ÔEÐEÑE÷Fô
 
×	Ñ	Ð.°Ó	7ñ FÜœ* VÓ,¬kÔ:Ð:Ð:Üœ* YÓ/´Ô=Ð=Ð=Üœ* ]Ó3´_ÔEÐEÑE÷Fð F÷Fð Fú÷
Fð Fú÷
Fð Fús'   ÁAFÂ>AFÄ/AF#ÆFÆF Æ#F,c                  óD  — ddl m}  | j                  d«      }| j                  d«      }t        sdn$t	        t
        j                  «      t	        |«      k  }t        sdn$t	        t        j                  «      t	        |«      k  }t        xr | }t        xr | }|sÖ|sÓ|r6d|› d�}t        j                  t        |¬«      5  t        d	«       d d d «       n1d
}t        j                  t        |¬«      5  t        d	«       d d d «       |r6d|› d�}t        j                  t        |¬«      5  t        d	«       d d d «       y d}t        j                  t        |¬«      5  t        d	«       d d d «       y y y # 1 sw Y   ŒuxY w# 1 sw Y   Œ�xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   )ÚVERSIONSr    r   FzPandas requires version .z. or newer of .pyarrow.r�   r®   z%Missing optional dependency .pyarrow.z. or newer of .fastparquet.z)Missing optional dependency .fastparquet.)Úpandas.compat._optionalr´   Úgetr-   r   r    Ú__version__r3   r   r.   rŸ   ÚImportErrorr   )r´   Ú
pa_min_verÚ
fp_min_verÚhave_pa_bad_versionÚhave_fp_bad_versionÚhave_usable_paÚhave_usable_fprž   s           r)   Ú"test_get_engine_auto_error_messager¿   2  s�  € õ 1ð —‘˜iÓ(€JØ—‘˜mÓ,€Jõ ñ 	ä”W×(Ñ(Ó)¬G°JÓ,?Ñ?ð õ !ñ 	ä”[×,Ñ,Ó-´¸
Ó0CÑCð ô #Ò>Ð+>Ð'>€NÜ&ÒBÐ/BÐ+B€Ná¡.áØ/°
¨|Ð;RÐSˆEÜ—‘œ{°%Ô8ñ #Ü˜6Ô"÷#ð #ð <ˆEÜ—‘œ{°%Ô8ñ #Ü˜6Ô"÷#ñ Ø/°
¨|Ð;VÐWˆEÜ—‘œ{°%Ô8ñ #Ü˜6Ô"÷#ð #ð @ˆEÜ—‘œ{°%Ô8ñ #Ü˜6Ô"÷#ð #ð# #1ˆ>÷#ð #ú÷#ð #ú÷
#ð #ú÷#ð #ús0   Ã E2Ã2E>Ä)F
ÅFÅ2E;Å>FÆ
FÆFc                 ó  — | }t        j                  «       5 }|j                  ||d ¬«       t        ||¬«      }t        j                  ||«       t        ||ddg¬«      }t        j                  ||ddg   «       d d d «       y # 1 sw Y   y xY w©N)r*   r€   ©r*   rS   rU   )r*   rB   ©r‡   r‘   r   r   rˆ   ©r^   r1   r7   r]   r�   Úresults         r)   Útest_cross_engine_pa_fprÆ   ]  s‚   € ð 
€BÜ	�‰Ó	ð 6˜dØ
�‰�d 2°4ˆÔ8ä˜d¨2Ô.ˆÜ
×Ñ˜f bÔ)ä˜d¨2¸¸S°zÔBˆÜ
×Ñ˜f b¨#¨s¨¡nÔ5÷6÷ 6ñ 6úó   —A#BÂBc                 ó  — | }t        j                  «       5 }|j                  ||d ¬«       t        ||¬«      }t        j                  ||«       t        ||ddg¬«      }t        j                  ||ddg   «       d d d «       y # 1 sw Y   y xY wrÁ   rÃ   rÄ   s         r)   Útest_cross_engine_fp_parÉ   k  s€   € à	€BÜ	�‰Ó	ð 6˜dØ
�‰�d 2°4ˆÔ8ä˜d¨2Ô.ˆÜ
×Ñ˜f bÔ)ä˜d¨2¸¸S°zÔBˆÜ
×Ñ˜f b¨#¨s¨¡nÔ5÷6÷ 6ñ 6úrÇ   c                 ó  — t        j                  dg d¢i«      }d}t        j                  «       5 }t        j                  t
        |dd¬«      5  |j                  || «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NrS   r9   zqStarting with pandas version 3.0 all arguments of to_parquet except for the argument 'path' will be keyword-only.F)rž   Úcheck_stacklevelÚraise_on_extra_warnings)rC   rD   r‡   r‘   Úassert_produces_warningÚFutureWarningr   )r*   r]   r¡   r�   s       r)   Ú!test_parquet_pos_args_deprecationrÏ   x  s†   € ä	�‰�sšIÐ&Ó	'€Bð	1ð ô 
�‰Ó	ð (˜dÜ×'Ñ'ÜØØ"Ø$)ô	
ñ 	(ð �M‰M˜$ Ô'÷	(÷(ð (÷	(ð 	(ú÷(ð (ús#   °A>ÁA2Á!A>Á2A;	Á7A>Á>Bc                   ó   — e Zd Zd„ Zd„ Zy)ÚBasec                 óÌ   — t        j                  «       5 }t        j                  ||¬«      5  t	        |||d ¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr�   ©r€   )r‡   r‘   r.   rŸ   r   )Úselfr]   r*   ÚexcÚerr_msgr�   s         r)   Úcheck_error_on_writezBase.check_error_on_writeŠ  sY   € ä�_‰_Óð 	? $Ü—‘˜s¨'Ô2ñ ?Ü˜2˜t V¸Õ>÷?÷	?ð 	?÷?ð ?ú÷	?ð 	?ús!   •A­A½AÁA	ÁAÁA#c                 óÈ   — t        j                  «       5 }t        j                  |«      5  t        |||d ¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NrÓ   )r‡   r‘   Úexternal_error_raisedr   )rÔ   r]   r*   rÕ   r�   s        r)   Úcheck_external_error_on_writez"Base.check_external_error_on_write�  sY   € ä�_‰_Óð 	? $Ü×)Ñ)¨#Ó.ñ ?Ü˜2˜t V¸Õ>÷?÷	?ð 	?÷?ð ?ú÷	?ð 	?ús!   •A«A»AÁA	ÁAÁA!N)Ú__name__Ú
__module__Ú__qualname__r×   rÚ   r0   r+   r)   rÑ   rÑ   ‰  s   „ ò?ó?r+   rÑ   c                   óZ  — e Zd Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zej                  j,                  ej                  j.                  d„ «       «       Zy)Ú	TestBasicc                 óÊ   — t        j                  g d¢«      ddt        j                  d«      t        j                  g d¢«      fD ]  }d}| j                  ||t        |«       Œ y )Nr9   r:   r=   rP   z+to_parquet only supports IO with DataFrames)rC   ÚSeriesrz   rZ   r   r×   r    )rÔ   r*   Úobjr¡   s       r)   Ú
test_errorzTestBasic.test_error˜  s[   € ä�I‰I’iÓ ØØÜ�L‰L˜Ó$Ü�H‰H’YÓð
ò 	DˆCð @ˆCØ×%Ñ% c¨6´:¸sÕCñ	Dr+   c           	      ó–   — t        j                  t        d«      t        t        dd«      «      dœ«      }ddg|_        t        ||«       y )NrH   r:   rI   ©rl   rq   r=   re   ©rC   rD   rX   rY   rB   r’   )rÔ   r*   r]   s      r)   Útest_columns_dtypeszTestBasic.test_columns_dtypes£  s;   € Ü�\‰\¤T¨%£[¼¼eÀAÀq»kÓ9JÑKÓLˆð ˜U�^ˆŒ
Ü˜˜VÕ$r+   r€   )NÚgzipÚsnappyÚbrotlic                 óV   — t        j                  dg d¢i«      }t        ||d|i¬«       y )Nr?   r9   r€   ©r�   ©rC   rD   r’   )rÔ   r*   r€   r]   s       r)   Útest_compressionzTestBasic.test_compressionª  s&   € ä�\‰\˜3¢	Ð*Ó+ˆÜ˜˜V°=À+Ð2NÖOr+   c           	      óÐ   — t        j                  t        d«      t        t        dd«      «      dœ«      }t        j                  dt        d«      i«      }t	        |||ddgi¬«       y )NrH   r:   rI   rå   rl   rB   ©rŒ   rŽ   ©rC   rD   rX   rY   r’   )rÔ   r*   r]   rŒ   s       r)   Útest_read_columnszTestBasic.test_read_columns¯  sS   € ä�\‰\¤T¨%£[¼¼eÀAÀq»kÓ9JÑKÓLˆä—<‘< ¬4°«;Ð 7Ó8ˆÜØ� ¸	ÀHÀ:Ð7Nö	
r+   c           
      óÐ   — t        j                  t        t        d«      «      t        d«      dœ«      }t        j                  dddgi«      }t	        ||||ddgid	gdgd
œd¬«       y )NrI   Úaabb)rq   Úpartrq   r   r:   Úpartition_colsrõ   )rõ   ú==rS   )ÚfiltersrB   )r�   rŒ   r�   rŽ   r‰   rñ   )rÔ   r*   Útmp_pathr]   rŒ   s        r)   Útest_read_filterszTestBasic.test_read_filters¸  sm   € Ü�\‰\äœE !›H“~Ü˜V›ñó
ˆô —<‘< ¨¨A¨ Ó0ˆÜØØØØØ*¨V¨HÐ5Ø%8Ð$9ÀuÀgÑNØö	
r+   c                 ó   — |dk7  }t        j                  dg d¢i«      }t        ||«       g d¢t        j                  dd¬«      t	        d«      g d	¢g}|D ]Q  }||_        t        |t         j                  «      r |j
                  j                  d «      |_        t        |||¬
«       ŒS g d¢|_        d|j
                  _	        t        ||«       y )Nr   r?   r9   )r;   r<   rI   rP   r<   rQ   rH   )r:   r<   rI   )rƒ   )r   r:   r;   r=   )
rC   rD   r’   r\   rX   Úindexr±   ÚDatetimeIndexÚ
_with_freqÚname)rÔ   r*   rƒ   r]   Úindexesrü   s         r)   Útest_write_indexzTestBasic.test_write_indexË  s·   € Ø Ñ-ˆä�\‰\˜3¢	Ð*Ó+ˆÜ˜˜VÔ$ò Ü�M‰M˜*¨aÔ0Ü�‹KÚð	
ˆð ò 	BˆEØˆBŒHÜ˜%¤×!1Ñ!1Ô2ØŸ8™8×.Ñ.¨tÓ4�”Ü˜R °[ÖAð		Bò ˆŒØˆ�‰ŒÜ˜˜VÕ$r+   c                 ó¢   — |}t        j                  dg d¢i«      }t         j                  j                  g d¢«      }||_        t        ||«       y )Nr?   r9   ©)rS   r:   )rS   r;   )rT   r:   )rC   rD   Ú
MultiIndexÚfrom_tuplesrü   r’   )rÔ   r1   r*   r]   rü   s        r)   Útest_write_multiindexzTestBasic.test_write_multiindexã  s@   € àˆä�\‰\˜3¢	Ð*Ó+ˆÜ—‘×)Ñ)Ò*HÓIˆØˆŒÜ˜˜VÕ$r+   c           	      óÆ  — |}t        j                  ddd¬«      }t        j                  t        j                  j                  d«      j                  dt        |«      z  df«      t        d«      ¬«      }t         j                  j                  d	d
g|gddg¬«      }|j                  d ¬«      }||fD ]-  }||_        t        ||«       t        ||dddgi|ddg   ¬«       Œ/ y )Nz01-Jan-2018z01-Dec-2018ÚMS)Úfreqr;   r<   ÚABCrA   ÚLevel1ÚLevel2ÚlevelÚdate)r™   rB   r?   r@   ©rŽ   rŒ   )rC   r\   rD   rZ   ÚrandomÚdefault_rngÚstandard_normalÚlenrX   r  Úfrom_productÚcopyrü   r’   )rÔ   r1   r*   Údatesr]   Úindex1Úindex2rü   s           r)   Útest_multiindex_with_columnsz&TestBasic.test_multiindex_with_columnsì  sá   € ØˆÜ—‘˜m¨]ÀÔFˆÜ�\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°a¼#¸e»*±nÀaÐ5HÓIÜ˜“Kô
ˆô —‘×+Ñ+Ø˜Ð! 5Ð)°'¸6Ð1Bð ,ó 
ˆð —‘ 4�Ó(ˆØ˜fÐ%ò 	ˆEØˆBŒHä˜R Ô(ÜØ�F¨°S¸#°JÐ(?È"ÈcÐSVÈZÉ.öñ		r+   c                 óÊ  — t        j                  g d¢g d¢dœ«      }d ddœ}|j                  d¬«      }t        ||||¬«       t        j                  g d¢g d¢dœg d	¢¬
«      }t        ||||¬«       g d¢g d¢g}t        j                  t	        t        d«      «      t        d«      D �cg c]  }| ‘Œ c}dœ|¬
«      }|j                  d¬«      }t        ||||¬«       y c c}w )Nr9   )ÚqÚrÚs)rS   rT   F)r€   rü   T)Údrop©r�   rŒ   )ÚzyxÚwvuÚtsr©rü   ©re   re   rf   rf   r=   r=   Úquxr%  ©ÚoneÚtwor'  r(  r'  r(  r'  r(  é   )r'  r(  )rC   rD   Úreset_indexr’   rX   rY   )rÔ   r*   r]   r�   rŒ   ÚarraysÚis          r)   Útest_write_ignoring_indexz#TestBasic.test_write_ignoring_indexÿ  sÕ   € ô �\‰\¢	²Ñ@ÓAˆà'+°eÑ<ˆð —>‘> t�>Ó,ˆä˜˜V°,ÈÕRô �\‰\Ú¢/Ñ2Ò:Oô
ˆô 	˜˜V°,ÈÕRò EÚDð
ˆô �\‰\Üœ˜q›“N¼¸a»Ö+A°1¨QªBÒ+AÑBÈ&ô
ˆð —>‘> t�>Ó,ˆÜ˜˜V°,ÈÖRùò	 ,Bs   Â)
C 
c                 ó,  — t         j                  j                  g d¢«      }t        j                  t        j
                  j                  d«      j                  d«      |¬«      }|dk(  r| j                  ||t        d«       y |dk(  rt        ||«       y y )Nr  r;   )rI   r<   rA   r   úColumn name must be a stringr    )rC   r  r  rD   rZ   r  r  r  r×   Ú	TypeErrorr’   )rÔ   r*   Ú
mi_columnsr]   s       r)   Útest_write_column_multiindexz&TestBasic.test_write_column_multiindex  s   € ä—]‘]×.Ñ.Ò/MÓNˆ
Ü�\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<Àjô
ˆð �]Ò"Ø×%Ñ%Ø�FœIÐ'Eõð �yÒ Ü˜R Õ(ð !r+   c                 ó   — g d¢g d¢g}t        j                  t        j                  j	                  d«      j                  d«      |¬«      }ddg|j                  _        |dk(  r| j                  ||t        d	«       y |d
k(  rt        ||«       y y )Nr$  )r:   r;   r:   r;   r:   r;   r:   r;   r;   ©r)  r)  rA   r  r  r   zColumn namer    )rC   rD   rZ   r  r  r  rB   r™   r×   r    r’   ©rÔ   r*   r+  r]   s       r)   Ú&test_write_column_multiindex_nonstringz0TestBasic.test_write_column_multiindex_nonstring-  s‡   € ò
 EÚ$ð
ˆô �\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<Àfô
ˆð % hÐ/ˆ�
‰
ÔØ�]Ò"Ø×%Ñ% b¨&´*¸mÕLØ�yÒ Ü˜R Õ(ð !r+   c                 óÜ   — |}g d¢g d¢g}t        j                  t        j                  j	                  d«      j                  d«      |¬«      }ddg|j                  _        t        ||«       y )Nr$  r&  r;   r4  rA   Ú	ColLevel1Ú	ColLevel2)	rC   rD   rZ   r  r  r  rB   r™   r’   ©rÔ   r1   r*   r+  r]   s        r)   Ú#test_write_column_multiindex_stringz-TestBasic.test_write_column_multiindex_string>  se   € ð ˆò EÚDð
ˆô �\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<Àfô
ˆð (¨Ð5ˆ�
‰
Ôä˜˜VÕ$r+   c                 óÐ   — |}g d¢}t        j                  t        j                  j	                  d«      j                  d«      |¬«      }d|j                  _        t        ||«       y )N)re   rf   r=   r%  r;   ©r)  rI   rA   Ú	StringCol)	rC   rD   rZ   r  r  r  rB   rÿ   r’   r:  s        r)   Útest_write_column_index_stringz(TestBasic.test_write_column_index_stringO  sT   € ð ˆò .ˆÜ�\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<Àfô
ˆð &ˆ�
‰
Œä˜˜VÕ$r+   c                 ó  — g d¢}t        j                  t        j                  j	                  d«      j                  d«      |¬«      }d|j                  _        |dk(  r| j                  ||t        d«       y t        ||«       y )N©r:   r;   r<   rI   r;   r=  rA   ÚNonStringColr   r/  )rC   rD   rZ   r  r  r  rB   rÿ   r×   r0  r’   r5  s       r)   Ú!test_write_column_index_nonstringz+TestBasic.test_write_column_index_nonstring]  so   € ò ˆÜ�\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°VÓ<Àfô
ˆð )ˆ�
‰
ŒØ�]Ò"Ø×%Ñ%Ø�FœIÐ'Eõô ˜R Õ(r+   c                 óþ  — t        j                  d«      }|dk(  r1t         j                  j                  d¬«      }|j	                  |«       t        j                  t        j                  g d¢d«      t        j                  g d¢d«      t        j                  g d¢«      t        j                  g d	¢«      t        j                  g d
¢d«      t        j                  g d¢d«      t        j                  g d¢d«      dœ«      }t        j                  «       5 }|j                  ||«       t        ||¬«      }t        ||d¬«      }d d d «       d   j                  t        j                  d«      k(  sJ ‚t        j                  t        j                  g d¢d¬«      t        j                  g d¢d¬«      t        j                  g d¢d¬«      t        j                  g d	¢d¬«      t        j                  g d
¢d¬«      t        j                  g d¢d¬«      t        j                  g d¢d¬«      dœ«      }	|dk(  r&j!                  dd¬«      }|	j!                  dd¬«      }	t        j"                  |	«       y # 1 sw Y   �Œ1xY w)Nzpyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   ©r:   r;   r<   NÚint64Úuint8)rS   rT   r`   N)TFTNrA  )ç      ð?ri   rj   NÚfloat32rL   )rS   rT   r`   rU   rV   rW   ÚgrÂ   Únumpy_nullable©r*   Údtype_backendrS   ÚInt64rM   ÚUInt8rl   ÚbooleanÚFloat32ÚFloat64r`   r:   )Úaxis)r.   Úimportorskipr5   r6   r4   r    Útabler   r‡   r‘   Úwrite_tabler   rN   rZ   rC   rD   r  rˆ   )
rÔ   r*   r(   Úpqr5   rU  r�   Úresult1Úresult2rŒ   s
             r)   Útest_dtype_backendzTestBasic.test_dtype_backendm  sê  € Ü× Ñ Ð!2Ó3ˆà�]Ò"ô —;‘;×$Ñ$ØGð %ó ˆDð ×Ñ Ô%ä—‘ä—]‘]¢?°GÓ<Ü—]‘]¢?°GÓ<Ü—]‘]Ò#8Ó9Ü—]‘]Ò#<Ó=ä—]‘]¢<°Ó9ä—]‘]Ò#8¸)ÓDÜ—]‘]Ò#8¸)ÓDñ
ó
ˆô �_‰_Óð 	X $à�N‰N˜5 $Ô'Ü" 4°Ô7ˆGÜ" 4°ÐFVÔWˆG÷		Xð �s‰|×!Ñ!¤R§X¡X¨iÓ%8Ò8Ð8Ð8Ü—<‘<ä—X‘Xšo°WÔ=Ü—X‘Xšo°WÔ=Ü—X‘XÒ3¸8ÔDÜ—X‘XÒ7¸yÔIÜ—X‘Xšl°'Ô:Ü—X‘XÒ3¸9ÔEÜ—X‘XÒ3¸9ÔEñó

ˆð �]Ò"ð —l‘l 3¨Q�lÓ/ˆGØ—}‘} S¨q�}Ó1ˆHÜ
×Ñ˜g xÕ0÷/	Xñ 	Xús   Ä.I2É2I<rN   )	rN  rO  rP  Úobjectzdatetime64[ns, UTC]rs   z	period[D]rR  rl   c                 óä   — t        j                  dt        j                  g |¬«      i«      }d }|dk(  r,t        j                  dt        j                  g d¬«      i«      }t        ||ddi|¬«       y )NÚvaluerM   rs   rR  rM  rK  r  )rC   rD   r   r’   )rÔ   r1   rN   r]   rŒ   s        r)   Útest_read_empty_arrayzTestBasic.test_read_empty_arrayž  sr   € ô  �\‰\àœŸ™ "¨EÔ2ðó
ˆð ˆØ�GÒÜ—|‘|àœRŸX™X b°	Ô:ðóˆHô
 	Ø� Ð2BÐ CÈhö	
r+   c                 ó(  — |dk7  rt        j                  |«       t         |dddd«      d¬«      5 }|j                  |j	                  «       ¬«       t        |j                  |¬	«      }d d d «       t        j                  |«       y # 1 sw Y   Œ xY w)
Nr®   ÚioÚdataÚparquetzsimple.parquetÚrb)Úmode)ÚcontentrÂ   )	r.   rT  ÚopenÚserve_contentÚreadr   Úurlr‡   rˆ   )rÔ   Ú
httpserverÚdatapathrF   r*   rW   r]   s          r)   Útest_parquet_read_from_urlz$TestBasic.test_parquet_read_from_url¿  s�   € ð �VÒÜ×Ñ Ô'Ü‘(˜4 ¨Ð4DÓEÈDÔQð 	=ÐUVØ×$Ñ$¨Q¯V©V«XÐ$Ô6Ü˜jŸn™n°VÔ<ˆB÷	=ô 	×Ñ˜b )Õ,÷	=ð 	=ús   ±8BÂBN)rÛ   rÜ   rÝ   rã   rç   r.   r5   Úparametrizerî   rò   rú   r  r  r  r-  r2  r6  r;  r?  rC  rZ  r^  ÚnetworkÚ
single_cpurl  r0   r+   r)   rß   rß   —  sÐ   „ ò	Dò%ð ‡[�[×Ñ˜]Ò,NÓOñPó PðPò
ò
ò&%ò0%òò&Sò@)ò)ò"%ò"%ò)ò /1ðb ‡[�[×ÑØò
	
óñ
óð
ð& ‡[�[×ÑØ‡[�[×Ññ-ó ó ñ-r+   rß   c                   ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
j                  j                   e«       d¬	«      e
j                  j                  e d
¬	«      e
j                  j!                  deej&                  g«      d„ «       «       «       Zd„ Ze
j                  j,                  d„ «       Ze
j                  j,                  d„ «       Ze
j                  j,                  e
j                  j!                  ddgg g«      d„ «       «       Zd„ Zd„ Zd„ Zd„ Ze
j                  j!                  ded„ gddg¬«      d„ «       Zd„ Zd„ Z d„ Z!d„ Z"d „ Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(d&„ Z)e
j                  j!                  d'd(d)g e
jT                  d*d+ge
j                  j                  e+e,d,¬-«      ¬.«       e-jZ                  d/d)d)d(d(«       e-jZ                  d/d)d)d)d)«      gg«      d0„ «       Z.d1„ Z/d2„ Z0d3„ Z1e
j                  j                  e2d4¬	«      d5„ «       Z3d6„ Z4y7)8ÚTestParquetPyArrowc                 óŠ   — |}t        j                  ddd¬«      }|j                  d «      }||d<   g d¢|d<   t        ||«       y )NrP   r<   úEurope/Brussels©rR   ÚtzÚdatetime_tz©TNTÚbool_with_none)rC   r\   rþ   r’   )rÔ   r1   r|   r]   Údtis        r)   Ú
test_basiczTestParquetPyArrow.test_basicË  sI   € Øˆô �m‰m˜J°Ð6GÔHˆØ�n‰n˜TÓ"ˆØˆˆ=ÑÚ1ˆÐÑä˜˜RÕ r+   c                 ón   — |}t        j                  ddd¬«      |d<   t        |||ddg   dddgi¬	«       y )
NrP   r<   rs  rt  rv  rl   rq   rB   rð   )rC   r\   r’   )rÔ   r1   r|   r]   s       r)   Útest_basic_subset_columnsz,TestParquetPyArrow.test_basic_subset_columnsÖ  sI   € ð ˆäŸM™M¨*¸aÐDUÔVˆˆ=ÑäØØØ˜ 5Ð)Ñ*Ø" X¨uÐ$5Ð6ö		
r+   c                 óâ   — |j                  |¬«      }t        |t        «      sJ ‚t        |«      }t	        |«      }|j                  «       }d |j                  d<   t        j                  ||«       y )NrÂ   r‚   )	r   r±   ro   r   r   r  r†   r‡   rˆ   )rÔ   r1   r|   Ú	buf_bytesÚ
buf_streamÚresrŒ   s          r)   Ú*test_to_bytes_without_path_or_buf_providedz=TestParquetPyArrow.test_to_bytes_without_path_or_buf_providedä  sc   € à×&Ñ&¨bÐ&Ó1ˆ	Ü˜)¤UÔ+Ð+Ð+ä˜YÓ'ˆ
Ü˜:Ó&ˆà—<‘<“>ˆØ-1ˆ�‰Ð)Ñ*Ü
×Ñ˜c 8Õ,r+   c                 óÖ   — t        j                  t        j                  d«      j	                  dd«      t        d«      ¬«      j                  «       }| j                  ||t        d«       y )Né   rI   r<   ÚaaarA   zDuplicate column names found©	rC   rD   rZ   r[   ÚreshaperX   r  r×   r    ©rÔ   r1   r]   s      r)   Útest_duplicate_columnsz)TestParquetPyArrow.test_duplicate_columnsð  sI   € ä�\‰\œ"Ÿ)™) B›-×/Ñ/°°1Ó5¼tÀE»{ÔK×PÑPÓRˆØ×!Ñ! " b¬*Ð6TÕUr+   c                 ót   — t        j                  dt        j                  dd¬«      i«      }t        ||«       y )NrS   ú1 dayr<   rQ   )rC   rD   Útimedelta_ranger’   r‡  s      r)   Útest_timedeltaz!TestParquetPyArrow.test_timedeltaõ  s,   € Ü�\‰\˜3¤× 2Ñ 2°7ÀAÔ FÐGÓHˆÜ˜˜RÕ r+   c                 óx   — t        j                  dg d¢i«      }| j                  ||t        j                  «       y )NrS   ©rS   r:   ri   )rC   rD   rÚ   r    ÚArrowExceptionr‡  s      r)   Útest_unsupportedz#TestParquetPyArrow.test_unsupportedù  s/   € ä�\‰\˜3¢Ð.Ó/ˆð 	×*Ñ*¨2¨r´7×3IÑ3IÕJr+   c                 óè   — t        j                  ddt         j                  ¬«      }t        j                  |dg¬«      }t
        r"| j                  ||t        j                  «       y t        ||«       y )Nr;   é
   rM   Úfp16©ra  rB   )
rZ   r[   Úfloat16rC   rD   r   rÚ   r    r�  r’   )rÔ   r1   ra  r]   s       r)   Útest_unsupported_float16z+TestParquetPyArrow.test_unsupported_float16   sQ   € ô �y‰y˜˜B¤b§j¡jÔ1ˆÜ�\‰\˜t¨f¨XÔ6ˆÝØ×.Ñ.¨r°2´w×7MÑ7MÕNä˜R Õ$r+   zqPyArrow does not cleanup of partial files dumps when unsupported dtypes are passed to_parquet function in windowsr   zfloat16 works on 15Ú	path_typec                 ó¼  — t        j                  ddt         j                  ¬«      }t        j                  |dg¬«      }t        j                  «       5 } ||«      }t        j                  t        j                  «      5  |j                  ||¬«       d d d «       t        j                  j                  |«      rJ ‚	 d d d «       y # 1 sw Y   Œ4xY w# 1 sw Y   y xY w)Nr;   r’  rM   r“  r”  )r�   r*   )rZ   r[   r•  rC   rD   r‡   r‘   rÙ   r    r�  r   Úosr�   Úisfile)rÔ   r1   r—  ra  r]   Úpath_strr�   s          r)   Ú test_unsupported_float16_cleanupz3TestParquetPyArrow.test_unsupported_float16_cleanup
  s®   € ô �y‰y˜˜B¤b§j¡jÔ1ˆÜ�\‰\˜t¨f¨XÔ6ˆä�_‰_Óð 	, (Ù˜XÓ&ˆDÜ×)Ñ)¬'×*@Ñ*@ÓAñ 4Ø—‘ 4°�Ô3÷4ä—w‘w—~‘~ dÔ+Ð+Ð+Ð+÷		,ð 	,÷4ð 4ú÷	,ð 	,ús$   Á,CÁ?CÂ)CÃC	ÃCÃCc           
      ó  — t        j                  t        j                  t        d«      «      t        j                  g d¢t        j                  g d¢«      ¬«      t        j                  g d¢g d¢d¬«      d	œ«      }t        ||«       y )
NÚabcdef)re   r=   r=   re   Nre   rd   rM   )rS   rT   r`   rS   r`   rT   )rT   r`   rU   T)Ú
categoriesÚordered©rS   rT   r`   )rC   rD   ÚCategoricalrX   ÚCategoricalDtyper’   r‡  s      r)   Útest_categoricalz#TestParquetPyArrow.test_categorical   sf   € ä�\‰\ä—^‘^¤D¨£NÓ3ä—^‘^Ú=Ü×-Ñ-Ò.CÓDôô
 —^‘^Ú2Ú.Ø ôñó
ˆô" 	˜˜RÕ r+   c                 ó”   — t        j                  d«      } |j                  di |¤Ž}d|i}t        |||j                  › d�||¬«       y )NÚs3fsÚ
filesystemú/pyarrow.parquet©r�   rŽ   r�   r0   )r.   rT  ÚS3FileSystemr’   rÿ   )rÔ   rF   Ús3_public_bucketr1   Ús3sor¦  Ús3Úkws           r)   Útest_s3_roundtrip_explicit_fsz0TestParquetPyArrow.test_s3_roundtrip_explicit_fs5  sW   € ä×"Ñ" 6Ó*ˆØˆT×ÑÑ& Ñ&ˆØ˜BÐˆÜØØØ$×)Ñ)Ð*Ð*:Ð;ØØö	
r+   c                 óH   — d|i}t        ||d|j                  › d�||¬«       y )NÚstorage_optionsús3://r¨  r©  ©r’   rÿ   )rÔ   rF   r«  r1   r¬  s        r)   Útest_s3_roundtripz$TestParquetPyArrow.test_s3_roundtripB  s7   € ð " 4Ð(ˆÜØØØÐ)×.Ñ.Ð/Ð/?Ð@ØØö	
r+   Úpartition_colr?   c                 ó8  — t        j                  d«       |j                  «       }|rL|j                  t        j                  |t        j                  «      «      }d}||   j                  |«      ||<   t        |||d|j                  › d�d|i|d |dœdd¬	«       y )
Nr¦  Úcategoryr²  z/parquet_dirr±  )rö   r€   r±  Tr:   )rŒ   r�   rŽ   r�   r„   r‰   )
r.   rT  r  ry   ÚdictÚfromkeysrZ   Úint32r’   rÿ   )rÔ   rF   r«  r1   rµ  r¬  Úexpected_dfÚpartition_col_types           r)   Útest_s3_roundtrip_for_dirz,TestParquetPyArrow.test_s3_roundtrip_for_dirN  sª   € ô 	×Ñ˜FÔ#à—n‘nÓ&ˆñ Ø%×,Ñ,¬T¯]©]¸=Ì"Ï(É(Ó-SÓTˆKØ!+Ðà)4°]Ñ)C×)JÑ)JØ"ó*ˆK˜Ñ&ô 	ØØØ ØÐ)×.Ñ.Ð/¨|Ð<Ø*¨DÐ1à"/Ø#Ø#'ñð
 Øö	
r+   c                 óö   — t        j                  d«       t        «       }|j                  |«       t	        |«      }|r&t
        s |j                  j                  d«      |_        t        j                  ||«       y )Nr    r¤   )
r.   rT  r   r   r   r   rB   ry   r‡   rˆ   )rÔ   rF   r§   ÚbufferÚdf_from_bufs        r)   Útest_read_file_like_obj_supportz2TestParquetPyArrow.test_read_file_like_obj_supportu  s^   € Ü×Ñ˜IÔ&Ü“ˆØ×Ñ˜VÔ$Ü" 6Ó*ˆÙÕ&:Ø )× 1Ñ 1× 8Ñ 8¸Ó ?ˆIÔÜ
×Ñ˜i¨Õ5r+   c                 ón  — t        j                  d«       |j                  dd«       |j                  dd«       t        j                  t        d¬«      5  t        d«       d d d «       t        j                  t        d¬«      5  |j                  d«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)Nr    ÚHOMEÚTestingUserÚUSERPROFILEz.*TestingUser.*r�   z~/file.parquet)r.   rT  ÚsetenvrŸ   ÚOSErrorr   r   )rÔ   rF   Úmonkeypatchs      r)   Útest_expand_userz#TestParquetPyArrow.test_expand_user~  s•   € Ü×Ñ˜IÔ&Ø×Ñ˜6 =Ô1Ø×Ñ˜=¨-Ô8Ü�]‰]œ7Ð*<Ô=ñ 	+ÜÐ)Ô*÷	+ä�]‰]œ7Ð*<Ô=ñ 	3Ø× Ñ Ð!1Ô2÷	3ð 	3÷	+ð 	+ú÷	3ð 	3ús   ÁBÂB+ÂB(Â+B4c                 ó˜   — ddg}|}|j                  ||d ¬«       t        ||«       t        |«      j                  |j                  k(  sJ ‚y )Nru   rq   ©rö   r€   ©r   r›   r   Úshape)rÔ   rù   r1   r|   rö   r]   s         r)   Útest_partition_cols_supportedz0TestParquetPyArrow.test_partition_cols_supported‡  sI   € à  %˜ˆØˆØ
�‰�h¨~È4ˆÔPÜ˜h¨Ô7Ü˜HÓ%×+Ñ+¨r¯x©xÒ7Ð7Ñ7r+   c                 óš   — d}|g}|}|j                  ||d ¬«       t        ||«       t        |«      j                  |j                  k(  sJ ‚y )Nru   rË  rÌ  )rÔ   rù   r1   r|   rö   Úpartition_cols_listr]   s          r)   Útest_partition_cols_stringz-TestParquetPyArrow.test_partition_cols_string�  sO   € àˆØ-Ð.ÐØˆØ
�‰�h¨~È4ˆÔPÜ˜hÐ(;Ô<Ü˜HÓ%×+Ñ+¨r¯x©xÒ7Ð7Ñ7r+   c                 ó   — | S r$   r0   )Úxs    r)   ú<lambda>zTestParquetPyArrow.<lambda>™  s   €  Q€ r+   rl   zpathlib.Path)Úidsc                 ó�   — d}|g}|} ||«      }|j                  ||¬«       t        |«      j                  |j                  k(  sJ ‚y )Nr@   )rö   )r   r   rÍ  )	rÔ   rù   r1   rF   r—  rö   rÐ  r]   r�   s	            r)   Útest_partition_cols_pathlibz.TestParquetPyArrow.test_partition_cols_pathlib˜  sO   € ð ˆØ-Ð.ÐØˆá˜Ó"ˆØ
�‰�dÐ+>ˆÔ?Ü˜DÓ!×'Ñ'¨2¯8©8Ò3Ð3Ñ3r+   c                 óJ   — t        j                  g g ¬«      }t        ||«       y )N)rü   rB   rí   r‡  s      r)   Útest_empty_dataframez'TestParquetPyArrow.test_empty_dataframe¦  s   € ä�\‰\ ¨BÔ/ˆÜ˜˜RÕ r+   c                 óò   — dd l }t        j                  dddgi«      } |j                   |j                  d |j
                  «       ¬«      g«      }|j                  t        «      }t        ||d|i|¬«       y )Nr   rÓ  r:   )Útyper˜   r  )	r    rC   rD   r˜   ÚfieldÚbool_ry   ru   r’   )rÔ   r1   r    r]   r˜   Úout_dfs         r)   Útest_write_with_schemaz)TestParquetPyArrow.test_write_with_schema«  sc   € Ûä�\‰\˜3  A ˜-Ó(ˆØ�—‘  §¡¨s¸¸¿¹»Ô!IÐ JÓKˆØ—‘œ4“ˆÜ˜˜R¨x¸Ð.@È6ÖRr+   c                 óÆ  — t        j                  d«       t        j                  t        j                  g d¢d¬«      t        j                  g d¢d¬«      t        j                  g d¢d¬«      dœ«      }|r&t
        r t        |||j                  d	d
i«      ¬«       nt        ||«       t        j                  dt        j                  g d¢d¬«      i«      }t        ||«       y )Nr    r9   rN  rM   ÚUInt32ra   rl   r¡  r`   r¤   ©rŒ   rS   rE  )r.   rT  rC   rD   rá   r   r’   ry   )rÔ   r1   r§   r]   s       r)   Ú test_additional_extension_arraysz3TestParquetPyArrow.test_additional_extension_arrays³  s£   € ô 	×Ñ˜IÔ&Ü�\‰\ä—Y‘Yšy°Ô8Ü—Y‘Yšy°Ô9Ü—Y‘YÒ/°xÔ@ñó
ˆñ Õ"6Ü˜R ¨b¯i©i¸¸e¸Ó.EÖFä˜R Ô$ä�\‰\˜3¤§	¡	ª/ÀÔ IÐJÓKˆÜ˜˜RÕ r+   c                 óÆ  — t        j                  d«       t        j                  dt        j                  g d¢d¬«      i«      }t        j
                  d|«      5  |rNt        r|j                  d«      }n|j                  d|› d	�«      }|j                  j                  d«      |_        n|j                  d|› d	�«      }t        |||¬
«       d d d «       y # 1 sw Y   y xY w)Nr    rS   ra   ústring[pyarrow]rM   Ústring_storager¤   zstring[ú]râ  )
r.   rT  rC   rD   rá   r¦   r   ry   rB   r’   )rÔ   r1   ræ  r§   r]   rŒ   s         r)   Ú test_pyarrow_backed_string_arrayz3TestParquetPyArrow.test_pyarrow_backed_string_arrayÆ  s¿   € ä×Ñ˜IÔ&Ü�\‰\˜3¤§	¡	Ò*:ÐBSÔ TÐUÓVˆÜ×ÑÐ/°Ó@ñ 		8Ù!Ý'Ø!Ÿy™y¨Ó/‘Hà!Ÿy™y¨7°>Ð2BÀ!Ð)DÓE�HØ#+×#3Ñ#3×#:Ñ#:¸5Ó#A�Õ àŸ9™9 w¨~Ð.>¸aÐ%@ÓA�Ü˜R ¨hÕ7÷		8÷ 		8ñ 		8ús   ÁA4CÃC c                 óH  — t        j                  d«       t        j                  t        j                  j                  g d¢«      t        j                  ddd¬«      t        j                  j                  t        j                  ddd¬«      «      dœ«      }t        ||«       y )	Nr    ))r   r:   )r:   r;   )r<   rI   z
2012-01-01r<   ÚD)rR   r	  rI   )r`   rU   rV   )
r.   rT  rC   rD   ÚIntervalIndexr  Úperiod_rangeÚfrom_breaksr\   r’   r‡  s      r)   Útest_additional_extension_typesz2TestParquetPyArrow.test_additional_extension_typesÕ  sz   € ô 	×Ñ˜IÔ&Ü�\‰\ä×%Ñ%×1Ñ1Ò2JÓKÜ—_‘_ \¸1À3ÔGä×%Ñ%×1Ñ1Ü—M‘M ,¸ÀÔDóñ	ó	
ˆô 	˜˜RÕ r+   c                 ó‚   — d}t        j                  dt        j                  ddd¬«      i«      }t        ||d|i¬«       y )	Nz2.6rS   z
2017-01-01Ú1nsr’  ©r	  rR   Úversionrì   )rC   rD   r\   r’   )rÔ   r1   Úverr]   s       r)   Útest_timestamp_nanosecondsz-TestParquetPyArrow.test_timestamp_nanosecondså  s;   € ð ˆÜ�\‰\˜3¤§¡¨lÀÐPRÔ SÐTÓUˆÜ˜˜R¨y¸#Ð.>Ö?r+   c                 óh  — t        j                  dd«       d|gz  }t        j                  |d|i¬«      }|d d  }t        r |j
                  j                  d«      |_        |j                  t        j                  j                  k7  r�	 dd l}|j
                  j                  j                  |«      }|j                  |j                  «       dz  «      }|j
                  j!                  |«      |_        |d   j"                  j!                  |«      |d<   t'        ||d	|¬
«       y # t$        $ r Y Œw xY w)Nr    ú11.0.0é   Úindex_as_col©rü   ra  Únsr   é<   F)r…   rŒ   )r.   rT  rC   rD   r	   rü   Úas_unitÚtzinforv   ÚtimezoneÚutcÚpytzru  Ú	utcoffsetÚFixedOffsetÚtotal_secondsÚ
tz_convertÚdtr¸   r’   )	rÔ   r1   r~   Úidxr]   rŒ   r   Úoffsetru  s	            r)   Útest_timezone_aware_indexz,TestParquetPyArrow.test_timezone_aware_indexí  s  € Ü×Ñ˜I xÔ0àÐ+Ð,Ñ,ˆÜ�\‰\ ¨>¸3Ð*?Ô@ˆð ‘a�5ˆÝØ%Ÿ^™^×3Ñ3°DÓ9ˆHŒNØ#×*Ñ*¬h×.?Ñ.?×.CÑ.CÒCðVÛð Ÿ™Ÿ™×.Ñ.Ð/GÓH�Ø×%Ñ% f×&:Ñ&:Ó&<¸rÑ&AÓB�Ø!)§¡×!:Ñ!:¸2Ó!>�”Ø+3°NÑ+C×+FÑ+F×+QÑ+QÐRTÓ+U�˜Ñ(Ü˜˜R¨U¸XÖFøô ò Ùðús   Â	D% Ä%	D1Ä0D1c                 ó6  — t        j                  d«       t        j                  dt	        t        d«      «      i«      }t        j                  «       5 }|j                  ||¬«       t        ||dg¬«      }d d d «       t        «      dk(  sJ ‚y # 1 sw Y   ŒxY w)Nr    rS   r<   rÂ   ©rS   r÷   r   ©rø   r:   )r.   rT  rC   rD   rX   rY   r‡   r‘   r   r   r  )rÔ   r1   r]   r�   rÅ   s        r)   Útest_filter_row_groupsz)TestParquetPyArrow.test_filter_row_groups  s…   € ä×Ñ˜IÔ&Ü�\‰\˜3¤¤U¨1£X£Ð/Ó0ˆÜ�_‰_Óð 	F $Ø�M‰M˜$ rˆMÔ*Ü! $¨°^Ð4DÔEˆF÷	Fô �6‹{˜aÒÐÑ÷	Fð 	Fús   Á#BÂBc                 ó  — t        j                  t        j                  j	                  d«      j                  d«      g d¢¬«      }t        j                  «       5 }|j                  ||¬«       t        ||«      }d d d «       |r;t        j                  t         j                  j                  j                  «      sJ ‚y t        j                  t         j                  j                  j                  «      sJ ‚y # 1 sw Y   Œ�xY w)Nr;   )r’  r<   )r?   r@   ÚCrA   rÂ   )rC   rD   rZ   r  r  r  r‡   r‘   r   r   r±   Ú_mgrÚcoreÚ	internalsÚArrayManagerÚBlockManager)rÔ   r1   Úusing_array_managerr]   r�   rÅ   s         r)   Útest_read_parquet_managerz,TestParquetPyArrow.test_read_parquet_manager  s»   € ä�\‰\Ü�I‰I×!Ñ! !Ó$×4Ñ4°WÓ=Âô
ˆô �_‰_Óð 	, $Ø�M‰M˜$ rˆMÔ*Ü! $¨Ó+ˆF÷	,ñ Ü˜fŸk™k¬2¯7©7×+<Ñ+<×+IÑ+IÔJÐJÑJä˜fŸk™k¬2¯7©7×+<Ñ+<×+IÑ+IÔJÐJÑJ÷	,ð 	,ús   Á C:Ã:Dc                 óò  — dd l }|}t        j                  ddd¬«      }|j                  d «      }||d<   g d¢|d<   |j                  j                  |«      }|j                  t        j                  ¬	«      }t        rj|d
   j                  d«      |d
<   |d   j                  d«      |d<   |d   j                  t        j                   |j                  dd¬«      «      «      |d<   t        ||ddi|¬«       y )Nr   rP   r<   rs  rt  rv  rw  rx  )Útypes_mapperrv   ztimestamp[us][pyarrow]rw   Úus)Úunitru  rM  r    ©r*   rŽ   rŒ   )r    rC   r\   rþ   ÚTableÚfrom_pandasÚ	to_pandasÚ
ArrowDtyper
   ry   Ú	timestampr’   )rÔ   r1   r|   r    r]   ry  Úpa_tablerŒ   s           r)   Ú&test_read_dtype_backend_pyarrow_configz9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config%  sþ   € Ûàˆô �m‰m˜J°Ð6GÔHˆØ�n‰n˜TÓ"ˆØˆˆ=ÑÚ1ˆÐÑà—=‘=×,Ñ,¨RÓ0ˆØ×%Ñ%´2·=±=Ð%ÓAˆÝà#+¨JÑ#7×#>Ñ#>Ð?WÓ#XˆH�ZÑ Ø,4Ð5HÑ,I×,PÑ,PØ(ó-ˆHÐ(Ñ)ð '/¨}Ñ&=×&DÑ&DÜ—‘Ð/˜g×/Ñ/°TÐ>OÔPÓQó'ˆH�]Ñ#ô 	ØØØ(¨)Ð4Øö		
r+   c                 ó6  — t        j                  dddgit        j                  ddgd¬«      d¬	«      }|j                  «       }d
d l}t        |j                  «      t        d«      kD  r |j                  j                  d«      |_        t        ||ddi|¬«       y )NrS   r:   r;   r<   rI   Útest©rÿ   zint64[pyarrow])rü   rN   r   rö  rM  r    r  )
rC   rD   rE   r  r    r   r·   rü   ry   r’   )rÔ   r1   r]   rŒ   r    s        r)   Ú,test_read_dtype_backend_pyarrow_config_indexz?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_indexC  s‡   € Ü�\‰\Ø�1�a�&ˆM¤§¡¨1¨a¨&°vÔ!>ÐFVô
ˆð —7‘7“9ˆÛä�7×&Ñ&Ó'¬'°(Ó*;Ò;Ø%Ÿ^™^×2Ñ2Ð3CÓDˆHŒNÜØØØ(¨)Ð4Øö		
r+   rB   r   r:   rb   rc   z*https://github.com/apache/arrow/pull/44171)rŸ   r   r   éÛ  c           	      ó’   — t        j                  t        d«      t        t        dd«      «      dœ«      }||_        t        ||«       y )NrH   r:   rI   rå   ræ   )rÔ   r1   rB   r]   s       r)   Útest_columns_dtypes_not_invalidz2TestParquetPyArrow.test_columns_dtypes_not_invalidS  s7   € ô& �\‰\¤T¨%£[¼¼eÀAÀq»kÓ9JÑKÓLˆàˆŒ
Ü˜˜RÕ r+   c                 óv   — t        j                  t        j                  g d¢d¬«      ¬«      }t        ||«       y )Nr¡  úcustom namer$  r#  ©rC   rD   rE   r’   r‡  s      r)   Útest_empty_columnsz%TestParquetPyArrow.test_empty_columnsk  s%   € ä�\‰\¤§¡ª¸}Ô MÔNˆÜ˜˜RÕ r+   c                 óÈ   — |dz  }t        j                  ddgi¬«      }ddi|_        |j                  ||¬«       t	        ||¬«      }|j                  |j                  k(  sJ ‚y )Nztest_df_metadata.pr:   ©ra  Útest_attributerÂ   )rC   rD   Úattrsr   r   )rÔ   rù   r1   r�   r]   Únew_dfs         r)   Útest_df_attrs_persistencez,TestParquetPyArrow.test_df_attrs_persistencep  s_   € ØÐ.Ñ.ˆÜ�\‰\  A 3˜xÔ(ˆØ$ aÐ(ˆŒØ
�‰�d 2ˆÔ&Ü˜d¨2Ô.ˆØ�|‰|˜rŸx™xÒ'Ð'Ñ'r+   c           	      ó  — |dz  }t        j                  dddgiddg¬«      }|j                  ||¬«       t        j                  dd	«      5  t	        ||¬«      }d d d «       t        j
                  t        j                  ¬
«      }t        j                  dddgi|t        j                  ddg|¬«      t        j                  dgt        r|st        n|¬«      ¬«      }t        j                  |«       y # 1 sw Y   ŒœxY w)Nztest_string_inference.prS   rÓ  ÚyrT   )ra  rü   rÂ   úfuture.infer_stringT©Úna_valuerM   )ra  rN   rü   rB   )rC   rD   r   r¦   r   ÚStringDtyperZ   rx   rE   r   r[  r‡   rˆ   )	rÔ   rù   r1   r§   r�   r]   rÅ   rN   rŒ   s	            r)   Útest_string_inferencez(TestParquetPyArrow.test_string_inferencex  sÞ   € àÐ3Ñ3ˆÜ�\‰\  c¨3 ZÐ0¸¸c¸
ÔCˆØ
�‰�d 2ˆÔ&Ü×ÑÐ4°dÓ;ñ 	3Ü! $¨rÔ2ˆF÷	3ä—‘¬¯©Ô/ˆÜ—<‘<Ø˜˜S�zÐ"ØÜ—(‘(˜C ˜:¨UÔ3Ü—H‘HØ�å'Ñ0Bõ àô	ô	

ˆô 	×Ñ˜f hÕ/÷	3ð 	3ús   ÁC5Ã5C>znot supported before 11.0c           	      óŽ  — dd l }|dz  }t        j                  dt        d«      gid¬«      }|j	                  ||j                  d|j                  d«      fg«      ¬«       t        |«      }t        rt        j                  dd	gid
¬«      }n#t        j                  dt        d«      gid¬«      }t        j                  ||«       y )Nr   z	decimal.prS   z123.00rå  rM   r÷  )r˜   Ú123zstring[python]r[  )r    rC   rD   r   r   r˜   Ú
decimal128r   r   r‡   rˆ   )rÔ   rù   r1   r�   r]   rÅ   rŒ   s          r)   Útest_roundtrip_decimalz)TestParquetPyArrow.test_roundtrip_decimal�  sª   € ó 	à˜+Ñ%ˆÜ�\‰\˜3¤¨Ó!2Ð 3Ð4Ð<MÔNˆØ
�‰�d 2§9¡9¨s°B·M±MÀ!Ó4DÐ.EÐ-FÓ#GˆÔHÜ˜dÓ#ˆÝÜ—|‘| S¨5¨' NÐ:JÔK‰Hä—|‘| S¬7°8Ó+<Ð*=Ð$>ÀhÔOˆHÜ
×Ñ˜f hÕ/r+   c           
      ó0  — dd l }dd lm} |dz  }|j                  d|j	                  g d¢|j                  «       «      i«      }|j                  ||«       t        j                  dd«      5  t        |«      }d d d «       t        j                  dg d¢it        j                  t        j                  ¬«      t        j                  dgt        j                  t        j                  ¬«      ¬«      ¬	«      }t        j                   |«       y # 1 sw Y   Œ–xY w)
Nr   zlarge_string.prS   )NrT   r`   r5  Tr6  rM   )ra  rN   rB   )r    Úpyarrow.parquetrb  rU  r   Úlarge_stringrV  rC   r¦   r   rD   r8  rZ   rx   rE   r‡   rˆ   )rÔ   rù   r1   rW  r�   rU  rÅ   rŒ   s           r)   Ú#test_infer_string_large_string_typez6TestParquetPyArrow.test_infer_string_large_string_typeœ  sÍ   € ãÝ$àÐ*Ñ*ˆà—‘˜#˜rŸx™xÒ(8¸"¿/¹/Ó:KÓLÐMÓNˆØ
�‰�u˜dÔ#ä×ÑÐ4°dÓ;ñ 	(Ü! $Ó'ˆF÷	(ä—<‘<ØÒ'Ð(Ü—.‘.¬"¯&©&Ô1Ü—H‘H˜c˜U¬"¯.©.Ä"Ç&Á&Ô*IÔJô
ˆô
 	×Ñ˜f hÕ/÷	(ð 	(ús   Á+DÄDN)5rÛ   rÜ   rÝ   rz  r|  r�  rˆ  rŒ  r�  r–  r.   r5   r6   r   Úskipifr   rm  r¤   ÚpathlibÚPathrœ  r¤  ro  r¯  r´  r½  rÁ  rÉ  rÎ  rÑ  r×  rÙ  rß  rã  rè  rî  rô  r  r  r  r!  r%  r&   r   ÚNotImplementedErrorrv   r(  r,  r2  r9  r	   r=  rA  r0   r+   r)   rq  rq  Ê  s�  „ ò	!ò
ò
-òVò
!òKò%ð ‡[�[×ÑÙÓð?ð ó ð ‡[�[×ÑÐ0Ð0Ð9NÐÓOØ‡[�[×Ñ˜[¨3°·±Ð*=Ó>ñ,ó ?ó Póð,ò!ð* ‡[�[×Ññ

ó ð

ð ‡[�[×Ññ	
ó ð	
ð ‡[�[×ÑØ‡[�[×ÑØàˆEØð	
óñ
óó ð
ò>6ò3ò8ò8ð ‡[�[×ÑØ�c™;Ð'¨h¸Ð-Gð ó ñ	4óð	4ò!ò
Sò!ò&8ò!ò @òGòB òKò
ò<
ð  ‡[�[×ÑØà�ˆFØˆF�L‰LØ˜Ð Ø—k‘k×'Ñ'Ø(Ø.ØGð (ó ôð "�×!Ñ! $¨¨1¨a°Ó3Ø!�×!Ñ! $¨¨1¨a°Ó3ðð	
óñ$!ó%ð$!ò!ò
(ò0ð* ‡[�[×ÑÐ,Ð5PÐÓQñ0ó Rð0ó0r+   rq  c                   óV  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
j                  j                  d„ «       Zd	„ Zd
„ Zd„ Zd„ Ze
j                  j%                   e«       d¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze
j                  j%                   e«       d¬«      d„ «       Zy)ÚTestParquetFastParquetc                 ó°   — |}t        j                  ddd¬«      }|j                  d «      }||d<   t        j                  dd¬«      |d<   t	        ||«       y )	NrP   r<   z
US/Easternrt  rv  rŠ  rQ   Ú	timedelta)rC   r\   rþ   r‹  r’   )rÔ   r7   r|   r]   ry  s        r)   rz  z!TestParquetFastParquet.test_basic½  sQ   € Øˆä�m‰m˜J°°lÔCˆØ�n‰n˜TÓ"ˆØˆˆ=ÑÜ×,Ñ,¨W¸aÔ@ˆˆ;‰Ü˜˜RÕ r+   c           	      ó†  — t        j                  t        d«      t        t        dd«      «      dœ«      }t        }d}ddg|_        | j                  ||||«       ddg|_        | j                  ||||«       t        j                  d	dddd«      t        j                  d	dddd«      g|_        | j                  ||||«       y )
NrH   r:   rI   rå   r/  r   rb   rc   r&  )rC   rD   rX   rY   r0  rB   r×   rv   )rÔ   r7   r]   Úerrr¡   s        r)   Útest_columns_dtypes_invalidz2TestParquetFastParquet.test_columns_dtypes_invalidÆ  s¾   € Ü�\‰\¤T¨%£[¼¼eÀAÀq»kÓ9JÑKÓLˆäˆØ,ˆð ˜�VˆŒ
Ø×!Ñ! " b¨#¨sÔ3ð ˜fÐ%ˆŒ
Ø×!Ñ! " b¨#¨sÔ3ô ×Ñ˜d A q¨!¨QÓ/Ü×Ñ˜d A q¨!¨QÓ/ð
ˆŒ
ð 	×!Ñ! " b¨#¨sÕ3r+   c                 óÚ   — t        j                  t        j                  d«      j	                  dd«      t        d«      ¬«      j                  «       }d}| j                  ||t        |«       y )Nrƒ  rI   r<   r„  rA   z9Cannot create parquet dataset with duplicate column namesr…  ©rÔ   r7   r]   r¡   s       r)   rˆ  z-TestParquetFastParquet.test_duplicate_columnsÛ  sM   € ä�\‰\œ"Ÿ)™) B›-×/Ñ/°°1Ó5¼tÀE»{ÔK×PÑPÓRˆØIˆØ×!Ñ! " b¬*°cÕ:r+   c                 óš  — dd l }t        |j                  «      t        d«      k  rTt        t        j                  «      t        d«      k\  r/|j	                  t
        j                  j                  d¬«      «       t        j                  dg d¢i«      }t        j                  ddt        j                  d	gid
¬«      }t        |||d¬«       y )Nr   ú	2024.11.0z2.0.0z$fastparquet uses np.float_ in numpy2r   rS   )TNFrH  g        r•  rM   F)rŒ   r…   )r   r   r·   rZ   r4   r.   r5   r6   rC   rD   rx   r’   )rÔ   r7   r(   r   r]   rŒ   s         r)   Útest_bool_with_nonez*TestParquetFastParquet.test_bool_with_noneá  sª   € Ûä�;×*Ñ*Ó+¬g°kÓ.BÒBÄwÜ�N‰NóH
ä�WÓòHð ×ÑÜ—‘×!Ñ!ØBð "ó ôô
 �\‰\˜3Ò 3Ð4Ó5ˆÜ—<‘<  s¬B¯F©F°CÐ&8Ð 9ÀÔKˆô 	˜˜R¨(ÀÖFr+   c                 óô   — t        j                  dt        j                  ddd¬«      i«      }| j                  ||t        d «       t        j                  dg d¢i«      }d}| j                  ||t        |«       y )NrS   Ú2013ÚMr<   rñ  rŽ  z"Can't infer object conversion type)rC   rD   rì  r×   r    rN  s       r)   r�  z'TestParquetFastParquet.test_unsupportedò  sd   € ä�\‰\˜3¤§¡°¸SÈ!Ô LÐMÓNˆà×!Ñ! " b¬*°dÔ;ô �\‰\˜3¢Ð.Ó/ˆØ2ˆØ×!Ñ! " b¬*°cÕ:r+   c                 ó‚   — t        j                  dt        j                  t        d«      «      i«      }t	        ||«       y )NrS   rH   )rC   rD   r¢  rX   r’   )rÔ   r7   r]   s      r)   r¤  z'TestParquetFastParquet.test_categoricalý  s,   € Ü�\‰\˜3¤§¡¬t°E«{Ó ;Ð<Ó=ˆÜ˜˜RÕ r+   c                 ó  — dt        t        d«      «      i}t        j                  |«      }t	        j
                  «       5 }|j                  ||d d¬«       t        ||dg¬«      }d d d «       t        «      dk(  sJ ‚y # 1 sw Y   ŒxY w)NrS   r<   r:   )r*   r€   Úrow_group_offsetsr
  r  )	rX   rY   rC   rD   r‡   r‘   r   r   r  )rÔ   r7   rU   r]   r�   rÅ   s         r)   r  z-TestParquetFastParquet.test_filter_row_groups  s   € Ø”$”u˜Q“x“.Ð!ˆÜ�\‰\˜!‹_ˆÜ�_‰_Óð 	F $Ø�M‰M˜$ r°tÈqˆMÔQÜ! $¨°^Ð4DÔEˆF÷	Fô �6‹{˜aÒÐÑ÷	Fð 	Fús   Á %A>Á>Bc           	      óJ   — t        ||d|j                  › d�d|id |dœ¬«       y )Nr²  z/fastparquet.parquetr±  )r€   r±  r©  r³  )rÔ   rF   r«  r7   r¬  s        r)   r´  z(TestParquetFastParquet.test_s3_roundtrip	  s7   € ô 	ØØØÐ)×.Ñ.Ð/Ð/CÐDØ*¨DÐ1Ø)-À$ÑGö	
r+   c                 óð   — ddg}|}|j                  |d|d ¬«       t        j                  j                  |«      sJ ‚dd l} |j
                  t        |«      d«      j                  }t        |«      dk(  sJ ‚y )Nru   rq   r   ©r*   rö   r€   r   Fr;   ©	r   r™  r�   Úexistsr   ÚParquetFiler¤   Úcatsr  ©rÔ   rù   r7   r|   rö   r]   r   Úactual_partition_colss           r)   rÎ  z4TestParquetFastParquet.test_partition_cols_supported  s{   € à  %˜ˆØˆØ
�‰ØØ Ø)Øð	 	ô 	
ô �w‰w�~‰~˜hÔ'Ð'Ð'Ûà 7 × 7Ñ 7¼¸H»ÀuÓ M× RÑ RÐÜÐ(Ó)¨QÒ.Ð.Ñ.r+   c                 óì   — d}|}|j                  |d|d ¬«       t        j                  j                  |«      sJ ‚dd l} |j
                  t        |«      d«      j                  }t        |«      dk(  sJ ‚y )Nru   r   rZ  r   Fr:   r[  r_  s           r)   rÑ  z1TestParquetFastParquet.test_partition_cols_string$  sw   € àˆØˆØ
�‰ØØ Ø)Øð	 	ô 	
ô �w‰w�~‰~˜hÔ'Ð'Ð'Ûà 7 × 7Ñ 7¼¸H»ÀuÓ M× RÑ RÐÜÐ(Ó)¨QÒ.Ð.Ñ.r+   c                 óð   — ddg}|}|j                  |dd |¬«       t        j                  j                  |«      sJ ‚dd l} |j
                  t        |«      d«      j                  }t        |«      dk(  sJ ‚y )Nru   rq   r   )r*   r€   Úpartition_onr   Fr;   r[  r_  s           r)   Útest_partition_on_supportedz2TestParquetFastParquet.test_partition_on_supported4  s{   € à  %˜ˆØˆØ
�‰ØØ ØØ'ð	 	ô 	
ô �w‰w�~‰~˜hÔ'Ð'Ð'Ûà 7 × 7Ñ 7¼¸H»ÀuÓ M× RÑ RÐÜÐ(Ó)¨QÒ.Ð.Ñ.r+   c                 ó    — ddg}|}d}t        j                  t        |¬«      5  |j                  |dd ||¬«       d d d «       y # 1 sw Y   y xY w)Nru   rq   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar�   r   )r*   r€   rc  rö   )r.   rŸ   r    r   )rÔ   rù   r7   r|   rö   r]   r¡   s          r)   Ú3test_error_on_using_partition_cols_and_partition_onzJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onD  sa   € ð ! %˜ˆØˆð ð 	ô �]‰]œ:¨SÔ1ñ 	Ø�M‰MØØ$Ø Ø+Ø-ð ô ÷	÷ 	ñ 	ús   ¤AÁAzfastparquet writes into Indexr   c                 óh   — t        j                  «       }|j                  «       }t        |||¬«       y )Nrâ  )rC   rD   r  r’   ©rÔ   r7   r]   rŒ   s       r)   rÙ  z+TestParquetFastParquet.test_empty_dataframeW  s&   € ô �\‰\‹^ˆØ—7‘7“9ˆÜ˜˜R¨(Ö3r+   c                 óŠ  — dd l }t        |j                  «      t        d«      kD  rPt        |j                  «      t        d«      k  r/|j                  t        j
                  j                  d¬«      «       d|gz  }t        j                  |d|i¬«      }|j                  «       }d	|j                  _        t        |||¬
«       y )Nr   z2022.12rP  zCfastparquet bug, see https://github.com/dask/fastparquet/issues/929r   r÷  rø  rù  rü   râ  )r   r   r·   r4   r.   r5   r6   rC   rD   r  rü   rÿ   r’   )rÔ   r7   r~   r(   r   r  r]   rŒ   s           r)   r  z0TestParquetFastParquet.test_timezone_aware_index^  s±   € Ûä�;×*Ñ*Ó+¬g°iÓ.@Ò@ÄWØ×#Ñ#óF
ä�KÓ òF!ð ×ÑÜ—‘×!Ñ!ðIð "ó ôð Ð+Ð,Ñ,ˆä�\‰\ ¨>¸3Ð*?Ô@ˆà—7‘7“9ˆØ%ˆ�‰ÔÜ˜˜R¨(Ö3r+   c                 óþ  — t        j                  dddgi«      }t        j                  «       5 }|j	                  |«       t        j                  t        d¬«      5  t        j                  t        «      5  t        |dd¬«       d d d «       d d d «       t        j                  t        d¬«      5  t        |dd	¬
«       d d d «       d d d «       y # 1 sw Y   ŒLxY w# 1 sw Y   ŒPxY w# 1 sw Y   Œ*xY w# 1 sw Y   y xY w)NrS   r:   r;   z!not supported for the fastparquetr�   r   T)r*   Úuse_nullable_dtypesr    rL  )rC   rD   r‡   r‘   r   r.   rŸ   r    rÍ   rÎ   r   )rÔ   r7   r]   r�   s       r)   Ú&test_use_nullable_dtypes_not_supportedz=TestParquetFastParquet.test_use_nullable_dtypes_not_supportedu  sá   € Ü�\‰\˜3  A ˜-Ó(ˆä�_‰_Óð 	R $Ø�M‰M˜$ÔÜ—‘œzÐ1TÔUñ WÜ×/Ñ/´Ó>ñ WÜ  ¨mÐQUÕV÷W÷Wô —‘œzÐ1TÔUñ RÜ˜T¨-ÀyÕQ÷R÷	Rð 	R÷Wð Wú÷Wð Wú÷Rð Rú÷	Rð 	RúsS   ®-C3ÁCÁ5CÂCÂ#C3Â/C'Â>C3ÃCÃCÃC$	Ã C3Ã'C0	Ã,C3Ã3C<c                 ód  — t        j                  d«      5 }t        j                  |«      j	                  d«       t        j                  t        d¬«      5  t        |d¬«       d d d «       t        j                  |«      j                  d¬«       d d d «       y # 1 sw Y   Œ7xY w# 1 sw Y   y xY w)	Nútest.parquets   breakitÚ r�   r   rÂ   F)Ú
missing_ok)
r‡   r‘   rC  rD  Úwrite_bytesr.   rŸ   Ú	Exceptionr   Úunlink)rÔ   r�   s     r)   Ú$test_close_file_handle_on_read_errorz;TestParquetFastParquet.test_close_file_handle_on_read_error€  sŠ   € Ü�_‰_˜^Ó,ð 	8°Ü�L‰L˜Ó×*Ñ*¨:Ô6Ü—‘œy°Ô3ñ 9Ü˜T¨-Õ8÷9ô �L‰L˜Ó×%Ñ%°Ð%Ô7÷	8ð 	8÷9ð 9ú÷	8ð 	8ús$   –A B&ÁBÁ$-B&ÂB#	ÂB&Â&B/c                 óX  — t        j                  ddgddgdœ¬«      }t        j                  d«      5 }t	        |j                  «       d«      5 }|j                  |«       d d d «       t        ||¬«      }d d d «       t        j                  |«       y # 1 sw Y   Œ5xY w# 1 sw Y   Œ,xY w)Nr   r:   r>   r.  rn  ÚwbrÂ   )	rC   rD   r‡   r‘   rf  Úencoder   r   rˆ   )rÔ   r*   r]   r�   rW   rÅ   s         r)   Útest_bytes_file_namez+TestParquetFastParquet.test_bytes_file_nameˆ  s“   € ä�\‰\ a¨ V°1°a°&Ñ9Ô:ˆÜ�_‰_˜^Ó,ð 	7°Ü�d—k‘k“m TÓ*ð !¨aØ—‘˜aÔ ÷!ô " $¨vÔ6ˆF÷		7ô
 	×Ñ˜f bÕ)÷	!ð !ú÷	7ð 	7ús#   ³B ÁBÁ B ÂB	ÂB Â B)c                 óX  — t        j                  d«       t        j                  ddgddgdœ¬«      }t	        j
                  «       5 }t        j                  t        d¬«      5  |j                  |dd¬	«       d d d «       d d d «       t	        j
                  «       5 }t        j                  |«      j                  d
«       t        j                  t        d¬«      5  t        |dd¬	«       d d d «       d d d «       y # 1 sw Y   Œ…xY w# 1 sw Y   Œ‰xY w# 1 sw Y   Œ*xY w# 1 sw Y   y xY w)Nr   r   r:   r>   r.  zfilesystem is not implementedr�   r=   ©r*   r§  rb   )r.   rT  rC   rD   r‡   r‘   rŸ   rE  r   rC  rD  rq  r   ©rÔ   r]   r�   s      r)   Útest_filesystem_notimplementedz5TestParquetFastParquet.test_filesystem_notimplemented’  s  € Ü×Ñ˜MÔ*Ü�\‰\ a¨ V°1°a°&Ñ9Ô:ˆÜ�_‰_Óð 	L $Ü—‘Ü#Ð+Jôñ Lð —‘˜d¨=ÀU�ÔK÷L÷	Lô �_‰_Óð 	K $Ü�L‰L˜Ó×*Ñ*¨6Ô2Ü—‘Ü#Ð+Jôñ Kô ˜T¨-ÀEÕJ÷K÷	Kð 	K÷Lð Lú÷	Lð 	Lú÷Kð Kú÷	Kð 	KúóI   ÁDÁ#C<Á8DÂA D ÃDÃ+D Ã<D	ÄDÄDÄD	ÄD Ä D)c                 óX  — t        j                  d«       t        j                  ddgddgdœ¬«      }t	        j
                  «       5 }t        j                  t        d¬«      5  |j                  |dd¬	«       d d d «       d d d «       t	        j
                  «       5 }t        j                  |«      j                  d
«       t        j                  t        d¬«      5  t        |dd¬	«       d d d «       d d d «       y # 1 sw Y   Œ…xY w# 1 sw Y   Œ‰xY w# 1 sw Y   Œ*xY w# 1 sw Y   y xY w)Nr    r   r:   r>   r.  z1filesystem must be a pyarrow or fsspec FileSystemr�   r=   rz  rb   )r.   rT  rC   rD   r‡   r‘   rŸ   r    r   rC  rD  rq  r   r{  s      r)   Útest_invalid_filesystemz.TestParquetFastParquet.test_invalid_filesystem¢  s  € Ü×Ñ˜IÔ&Ü�\‰\ a¨ V°1°a°&Ñ9Ô:ˆÜ�_‰_Óð 	H $Ü—‘ÜÐ"Uôñ Hð —‘˜d¨9À�ÔG÷H÷	Hô �_‰_Óð 	G $Ü�L‰L˜Ó×*Ñ*¨6Ô2Ü—‘ÜÐ"Uôñ Gô ˜T¨)ÀÕF÷G÷	Gð 	G÷Hð Hú÷	Hð 	Hú÷Gð Gú÷	Gð 	Gúr}  c           	      óœ  — t        j                  d«      }t        j                  ddgddgdœ¬«      }t	        j
                  «       5 }t        j                  t        d¬«      5  |j                  |d|j                  «       d	d
i¬«       d d d «       d d d «       t	        j
                  «       5 }t        j                  |«      j                  d«       t        j                  t        d¬«      5  t        |d|j                  «       d	d
i¬«       d d d «       d d d «       y # 1 sw Y   Œ–xY w# 1 sw Y   ŒšxY w# 1 sw Y   Œ*xY w# 1 sw Y   y xY w)Nz
pyarrow.fsr   r:   r>   r.  z8storage_options not supported with a pyarrow FileSystem.r�   r    r=   re   )r*   r§  r±  rb   )r.   rT  rC   rD   r‡   r‘   rŸ   rE  r   ÚLocalFileSystemrC  rD  rq  r   )rÔ   Úpa_fsr]   r�   s       r)   Ú.test_unsupported_pa_filesystem_storage_optionszETestParquetFastParquet.test_unsupported_pa_filesystem_storage_options²  s*  € Ü×#Ñ# LÓ1ˆÜ�\‰\ a¨ V°1°a°&Ñ9Ô:ˆÜ�_‰_Óð 
	 $Ü—‘Ü#ØPôñ 	ð —‘ØØ$Ø$×4Ñ4Ó6Ø%*¨E Nð	 ô ÷		÷
	ô �_‰_Óð 	 $Ü�L‰L˜Ó×*Ñ*¨6Ô2Ü—‘Ü#ØPôñ 	ô ØØ$Ø$×4Ñ4Ó6Ø%*¨E Nõ	÷		÷	ð 	÷	ð 	ú÷
	ð 
	ú÷	ð 	ú÷	ð 	úsI   ÁD*Á#&DÂ	D*Â-A EÃ- D6ÄEÄD'	Ä#D*Ä*D3Ä6D?	Ä;EÅEc           	      óL  — d}t        j                  dt        t        dd«      «      i«      }t	        j
                  d«      5 }|j                  |«       t        j                  t        |¬«      5  t        |d¬«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)	NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rq   r:   rI   ztmp.parquetr�   Únumpy)rM  )rC   rD   rX   rY   r‡   r‘   r   r.   rŸ   r    r   )rÔ   r*   r¡   r]   r�   s        r)   Útest_invalid_dtype_backendz1TestParquetFastParquet.test_invalid_dtype_backendÎ  s�   € ð%ð 	ô �\‰\˜5¤$¤u¨Q°£{Ó"3Ð4Ó5ˆÜ�_‰_˜]Ó+ð 	:¨tØ�M‰M˜$ÔÜ—‘œz°Ô5ñ :Ü˜T°Õ9÷:÷	:ð 	:÷:ð :ú÷	:ð 	:ús$   Á-BÁ/BÁ=BÂB	ÂBÂB#c                 óÔ   — t        j                  t        j                  g d¢d¬«      ¬«      }t        j                  t        j                  g d¢d¬«      ¬«      }t        |||¬«       y )Nr¡  r*  r$  r#  râ  r+  rh  s       r)   r,  z)TestParquetFastParquet.test_empty_columnsÙ  sB   € ô �\‰\¤§¡ª¸}Ô MÔNˆÜ—<‘<¤b§h¡hªÀ]Ô&SÔTˆÜ˜˜R¨(Ö3r+   N)rÛ   rÜ   rÝ   rz  rL  rˆ  rQ  r�  r¤  r  r.   r5   ro  r´  rÎ  rÑ  rd  rf  rB  r   rÙ  r  rl  rt  rx  r|  r  rƒ  r†  r,  r0   r+   r)   rG  rG  ¼  sß   „ ò!ò4ò*;òGò"	;ò!ò ð ‡[�[×Ññ
ó ð
ò/ò /ò /ò ð& ‡[�[×ÑÑ+Ó-Ð6UÐÓVñ4ó Wð4ò4ò.	Rò8ò*òKò Gò ò8	:ð ‡[�[×ÑÑ+Ó-Ð6UÐÓVñ4ó Wñ4r+   rG  )	NNNNNTFTr;   )MÚ__doc__rv   Údecimalr   r`  r   r™  rC  r…  rZ   r.   Úpandas._configr   r   Úpandas._config.configr   Úpandas.compatr   Úpandas.compat.pyarrowr	   r
   r   r   r   ÚpandasrC   Úpandas._testingÚ_testingr‡   Úpandas.util.versionr   Úpandas.io.parquetr   r   r   r   r   r    r-   r¸   r   r3   r5   ÚfilterwarningsÚ
pytestmarkÚfixturer&   rB  r6   r*   r1   r7   rF   r^   r|   Únowrþ  rÿ  ÚminÚmaxÚstrptimer~   r’   r›   r¢   r¨   r«   r¯   r²   r¿   rÆ   rÉ   rÏ   rÑ   rß   rq  rG  r0   r+   r)   ú<module>rš     su  ðÙ Û Ý Ý Û 	Û ã Û ÷õ .å -÷õ ó Ý Ý '÷õ ðÛà€MðÛàÐð ‡K�K×ÑÐSÓTØ
‡K�K×ÑØGóð€
ð €‡�àˆ�‰Øà—‘×"Ñ"Ø)Ð)ò PÙ"Ð#6¸tÔDÈÑOØQð #ó ð
 —‘×!Ñ!Ù&Ó(Ø;Ø ð "ó ðô	
ð 	ˆ�‰ØØ—+‘+×$Ñ$Ø!Ð!Ð*Dð %ó ô	
ð!ôñ2ó3ð2ð ‡�ñó ðð ‡�ñ	ó ð	ð ‡�ñTó ðTð ‡�ñó ðð" ‡�ñó ðð. €‡�à×Ñ×Ñ˜h×/Ñ/×3Ñ3Ó4Ø×Ñ×Ñ˜h×/Ñ/×3Ñ3Ó4Ø×Ñ×Ñ˜h×/Ñ/×3Ñ3Ó4Ø×Ñ×"Ñ"Ð#=Ð?TÓUØ×Ñ×"Ñ"Ð#=Ð?TÓUØ×Ñ×"Ñ"Ð#=Ð?TÓUØ×Ñ×"Ñ"Ð#=Ð?TÓUðô
ñó
ðð Ø	ØØØØØØØó?òD9ò 2ò$ò$ò$òFò((#òV6ò
6ò(÷"?ñ ?ôp-�ô p-ôf	c0˜ô c0ôdb4˜Tõ b4øðe$ ò ØƒMðûð ò ØÓðús$   Á$L Á+L ÌLÌLÌL)Ì(L)