
    m*i                     H   S r SSKrSSKJr  SSKJr  SSKrSSKrSSKr	SSK
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JrJrJr  SSKrSSKJr  SS	KJr  SS
KJ r J!r!J"r"J#r#J$r$   SSK%r%Sr& SSK(r(Sr)\
RT                  RW                  S5      \
RT                  RW                  S5      /r,\
RZ                  " \
R\                  " S\
RT                  R_                  \)(       + =(       d
    \" SSS9S:H  SS9\
RT                  Ra                  \" 5       SSS9/S9\
R\                  " S\
RT                  R_                  \&(       + SS9S9/S9S 5       r1\
RZ                  S 5       r2\
RZ                  S 5       r3\
RZ                  S 5       r4\
RZ                  S 5       r5\
RZ                  S  5       r6\
RZ                  " \R                  Ro                  \Rp                  Rr                  5      \R                  Ro                  \Rp                  Rt                  5      \R                  Ro                  \Rp                  Rv                  5      \R                  Ry                  S!S"5      \R                  Ry                  S#S"5      \R                  Ry                  S$S"5      \R                  Ry                  S%S"5      /S9S& 5       r=         S:S' jr>S( r?S) r@S* rAS+ rBS, rCS- rDS. rES/ rFS0 rGS1 rH " S2 S35      rI " S4 S5\I5      rJ " S6 S7\I5      rK " S8 S9\I5      rLg! \' a    Sr& GNf = f! \' a    Sr) GNf = f);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                     U R                   $ Nparamrequests    \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/pandas/tests/io/test_parquet.pyenginer*   @   s    4 ==    c                  F    [         (       d  [        R                  " S5        g)Nr!   r    )_HAVE_PYARROWpytestskip r+   r)   par1   ]   s    =./r+   c                    [         (       d  [        R                  " S5        O$[        SSS9S:X  a  [        R                  " S5        [	        5       (       a-  U R                  [        R                  R                  SSS	95        g
)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   sf    23	(	6'	ADEKK%EeT	
 r+   c                  b    [         R                  " / SQSS.[         R                  " SS/5      S9$ )N         fooABr?   r@   columns)pd	DataFrameIndexr0   r+   r)   	df_compatrF   q   s%    <<ie4bhhSz>RSSr+   c                      [         R                  " [        S5      [        [        SS5      5      [        R
                  " SSSS9/ SQ[         R                  " S	S
S9S.5      n U $ )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eAqk"395$z15
	

B Ir+   c                     [         R                  " [        S5      S[        R                  S// SQ/ SQ/ SQ[        [        SS5      5      [        R                  " S	S
5      R                  S5      [        R                  " SSSS9S[        R                  S// SQ[         R                  " SS	S9[         R                  " S5      [         R                  [         R                  " S5      /S.5      $ )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    <<5k #RVVS1 0-,a$IIaO**40YYsCy9"BFFC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                     U R                   $ r$   r%   r'   s    r)   timezone_aware_date_listr~      s     ==r+   c
                   ^ ^^^^^^^ T=(       d    SS0mT=(       d    0 mTc  T mU(       a
  UTS'   UTS'   UUUU UUUU4S jn
Tc'  [         R                  " 5        mU
" U	5        SSS5        gU
" U	5        g! , (       d  f       g= f)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           	         > [        U 5       HO  nTR                  " T40 T
D6  [        T40 T	D6nST;   a  S TR                  S'   [        R
                  " TUTTTS9  MQ     g )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)   compare!check_round_trip.<locals>.compare   se    vAMM$/,/!$6+6F 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  8M4#8L#K!'X &H  |__$FO  	 s   	A77
Bc                 |    SSK Jn  UR                  U SS9nUR                  R                  R                  U:X  d   eg)zCheck 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     !jjFj3G&&,,888r+   c                     Sn[         R                  " [        US9   [        U SS5        S S S 5        g ! , (       d  f       g = f)Nz.engine must be one of 'pyarrow', 'fastparquet'matchr=   re   )r.   raises
ValueErrorr   )rF   msgs     r)   test_invalid_enginer     s-    
:C	z	-E51 
.	-	-s	   3
Ac                     U(       a+  [         (       d   U R                  R                  S5      U l        [        R                  " SS5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nstrio.parquet.enginer    )r   rB   ry   rC   option_contextr   )rF   r1   using_infer_strings      r)   test_options_pyr     sI    "6"6%--44U;				.		:# 
;	:	:s   
A
A-c                 |    [         R                  " SS5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nr   r   rC   r   r   )rF   r7   s     r)   test_options_fpr     s)     
		.	># 
?	>	>   -
;c                 |    [         R                  " SS5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nr   autor   )rF   r7   r1   s      r)   test_options_autor     s)     
		.	7# 
8	7	7r   c                    [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr    r   r   r   )
isinstancer   r   r   rC   r   )r7   r1   s     r)   test_options_get_enginer     sn   j+[9999j/AAAA			.		:*V,k::::*Y/====*]3_EEEE 
;
 
		.	>*V,o>>>>*Y/====*]3_EEEE 
?
 
		.	7*V,k::::*Y/====*]3_EEEE 
8	7 
;	:
 
?	>
 
8	7s'   A!GA!GA!G(
G
G%(
G6c                     SSK Jn   U R                  S5      nU R                  S5      n[        (       d  SO$[	        [
        R                  5      [	        U5      :  n[        (       d  SO$[	        [        R                  5      [	        U5      :  n[        =(       a    U(       + n[        =(       a    U(       + nU(       d  U(       d  U(       a4  SU S3n[        R                  " [        US9   [        S	5        S S S 5        O/S
n[        R                  " [        US9   [        S	5        S S S 5        U(       a4  SU S3n[        R                  " [        US9   [        S	5        S S S 5        g Sn[        R                  " [        US9   [        S	5        S S S 5        g g g ! , (       d  f       N{= f! , (       d  f       N= f! , (       d  f       g = f! , (       d  f       g = f)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  sp    1 i(Jm,J } 	W(()GJ,??  !  	[,,-
0CC  #>+>'>N&B/B+BN./
|;RSE{%86" 98 <E{%86" 9 /
|;VWE{%86" 98 @E{%86" 98# #1> 98 98
 98 98s0   )FF+F<G
F(+
F9<
G

Gc                    U n[         R                  " 5        nUR                  XAS S9  [        XBS9n[         R                  " XS5        [        XBSS/S9n[         R                  " XSSS/   5        S S S 5        g ! , (       d  f       g = f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   ]  so     
B		d
d48d.
f)dSzB
f#sn5 
		   AA88
Bc                    U n[         R                  " 5        nUR                  XBS S9  [        XAS9n[         R                  " XS5        [        XASS/S9n[         R                  " XSSS/   5        S S S 5        g ! , (       d  f       g = fr   r   r   s         r)   test_cross_engine_fp_par   k  sm    	B		d
d48d.
f)dSzB
f#sn5 
		r   c                 &   [         R                  " S/ SQ05      nSn[        R                  " 5        n[        R                  " [
        USSS9   UR                  X05        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)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  sv    	sI&	'B	1  
	d''"$)	
 MM$'
 
	
 
 
	s#   BA1 B1
A?	;B
Bc                        \ rS rSrS rS rSrg)Basei  c           	          [         R                  " 5        n[        R                  " X4S9   [	        XUS S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   )r   r   r.   r   r   )selfr]   r*   excerr_msgr   s         r)   check_error_on_writeBase.check_error_on_write  sC    __$s22V> 3 22 s!   AAA
A	A
A'c           	          [         R                  " 5        n[         R                  " U5         [        XUS S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   )r   r   external_error_raisedr   )r   r]   r*   r   r   s        r)   check_external_error_on_write"Base.check_external_error_on_write  sE    __$))#.2V> / .. s!   AA
A

A	A
A)r0   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r0   r+   r)   r   r     s    ??r+   r   c                   b   \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       r\R                  R.                  \R                  R0                  S 5       5       rSrg)	TestBasici  c                     [         R                  " / SQ5      SS[         R                  " S5      [        R                  " / SQ5      4 H  nSnU R                  X![        U5        M     g )Nr9   r:   r=   rP   z+to_parquet only supports IO with DataFrames)rC   Seriesrz   rZ   r   r   r   )r   r*   objr   s       r)   
test_errorTestBasic.test_error  sR    IIi LL$HHY
C @C%%c:sC
r+   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      nSS/Ul        [        X!5        g )NrH   r:   rI   rl   rq   r=   re   rC   rD   rX   rY   rB   r   )r   r*   r]   s      r)   test_columns_dtypesTestBasic.test_columns_dtypes  s9    \\T%[eAqk9JKL U^
$r+   r   )Ngzipsnappybrotlic                 P    [         R                  " S/ SQ05      n[        X1SU0S9  g )Nr?   r9   r   r   rC   rD   r   )r   r*   r   r]   s       r)   test_compressionTestBasic.test_compression  s$    \\3	*+=+2NOr+   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      n[         R                  " S[        S5      05      n[	        X!USS/0S9  g )NrH   r:   rI   r   rl   rB   r   r   rC   rD   rX   rY   r   )r   r*   r]   r   s       r)   test_read_columnsTestBasic.test_read_columns  sQ    \\T%[eAqk9JKL<<4; 78	H:7N	
r+   c           
          [         R                  " [        [        S5      5      [        S5      S.5      n[         R                  " SSS/05      n[	        UUUUSS/0S	/S/S
.SS9  g )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_filtersTestBasic.test_read_filters  sm    \\E!H~V
 <<A0*VH5%8$9ugN	
r+   c                    US:g  n[         R                  " S/ SQ05      n[        X15        / SQ[         R                  " SSS9[	        S5      / S	Q/nU HR  nXSl        [        U[         R                  5      (       a   UR
                  R                  S 5      Ul        [        X1US
9  MT     / SQUl        SUR
                  l	        [        X15        g )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_indexTestBasic.test_write_index  s    -\\3	*+$ MM*a0K	
 EH%!1!12288..t4R[A	  $r+   c                     Un[         R                  " S/ SQ05      n[         R                  R                  / SQ5      nXCl        [        X25        g )Nr?   r9   )rS   r:   )rS   r;   )rT   r:   )rC   rD   
MultiIndexfrom_tuplesr  r   )r   r1   r*   r]   r  s        r)   test_write_multiindexTestBasic.test_write_multiindex  s<    \\3	*+))*HI$r+   c           	         Un[         R                  " SSSS9n[         R                  " [        R                  R                  S5      R                  S[        U5      -  S45      [        S5      S9n[         R                  R                  S	S
/U/SS/S9nUR                  S S9nXV4 H(  nXtl        [        XB5        [        XBSSS/0USS/   S9  M*     g )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_columns&TestBasic.test_multiindex_with_columns  s    m]F\\II!!!$44a#e*na5HIK
 ++!5)'61B , 
 4(%EHR(S#J(?"cSVZ.	 &r+   c                    [         R                  " / SQ/ SQS.5      nS SS.nUR                  SS9n[        X!X4S9  [         R                  " / SQ/ SQS./ S	QS
9n[        X!X4S9  / SQ/ SQ/n[         R                  " [	        [        S5      5      [        S5       Vs/ s H  of* PM     snS.US
9nUR                  SS9n[        X!X4S9  g s  snf )Nr9   )qrs)rS   rT   F)r   r  T)dropr   r   )zyxwvutsrr  re   re   rf   rf   r=   r=   quxr2  onetwor4  r5  r4  r5  r4  r5     )r4  r5  )rC   rD   reset_indexr   rX   rY   )r   r*   r]   r   r   arraysis          r)   test_write_ignoring_index#TestBasic.test_write_ignoring_index  s     \\	@A'+e< >>t>,,R \\/2:O
 	,R ED
 \\qNa+A1B+AB&
 >>t>,,R	 ,Bs   C

c                 (   [         R                  R                  / SQ5      n[         R                  " [        R
                  R                  S5      R                  S5      US9nUS:X  a  U R                  X1[        S5        g US:X  a  [        X15        g g )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_multiindex&TestBasic.test_write_column_multiindex  s{    ]]../MN
\\II!!!$44V<j
 ]"%%I'E y R( !r+   c                    / SQ/ SQ/n[         R                  " [        R                  R	                  S5      R                  S5      US9nSS/UR                  l        US:X  a  U R                  X1[        S	5        g US
:X  a  [        X15        g g )Nr1  )r:   r;   r:   r;   r:   r;   r:   r;   r;   r6  r6  rA   r  r  r   zColumn namer    )rC   rD   rZ   r  r  r  rB   r   r   r   r   r   r*   r8  r]   s       r)   &test_write_column_multiindex_nonstring0TestBasic.test_write_column_multiindex_nonstring-  s    
 E$
 \\II!!!$44V<f
 %h/

]"%%b*mLy R( !r+   c                     Un/ SQ/ SQ/n[         R                  " [        R                  R	                  S5      R                  S5      US9nSS/UR                  l        [        XB5        g )Nr1  r3  r;   rC  rA   	ColLevel1	ColLevel2)	rC   rD   rZ   r  r  r  rB   r   r   r   r1   r*   r8  r]   s        r)   #test_write_column_multiindex_string-TestBasic.test_write_column_multiindex_string>  sc      ED
 \\II!!!$44V<f
 (5

$r+   c                     Un/ SQn[         R                  " [        R                  R	                  S5      R                  S5      US9nSUR                  l        [        XB5        g )N)re   rf   r=   r2  r;   r6  rI   rA   	StringCol)	rC   rD   rZ   r  r  r  rB   r	  r   rJ  s        r)   test_write_column_index_string(TestBasic.test_write_column_index_stringO  sR      .\\II!!!$44V<f
 &

$r+   c                    / SQn[         R                  " [        R                  R	                  S5      R                  S5      US9nSUR                  l        US:X  a  U R                  X1[        S5        g [        X15        g )Nr:   r;   r<   rI   r;   rN  rA   NonStringColr   r=  )rC   rD   rZ   r  r  r  rB   r	  r   r>  r   rD  s       r)   !test_write_column_index_nonstring+TestBasic.test_write_column_index_nonstring]  sk     \\II!!!$44V<f
 )

]"%%I'E R(r+   c                    [         R                  " S5      nUS:X  a.  [         R                  R                  SS9nUR	                  U5        [
        R                  " [
        R                  " / SQS5      [
        R                  " / SQS5      [
        R                  " / SQ5      [
        R                  " / S	Q5      [
        R                  " / S
QS5      [
        R                  " / SQS5      [
        R                  " / SQS5      S.5      n[        R                  " 5        nUR                  XV5        [        XaS9n[        XaSS9nS S S 5        WS   R                  [        R                  " S5      :X  d   e[        R                  " [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / S	QSS9[        R                  " / S
QSS9[        R                  " / SQSS9[        R                  " / SQSS9S.5      n	US:X  a   WR!                  SSS9nU	R!                  SSS9n	[        R"                  " WU	5        g ! , (       d  f       GN'= f)Nzpyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r:   r;   r<   Nint64uint8)rS   rT   r`   N)TFTNrS  )      ?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   rh  r   result1result2r   s
             r)   test_dtype_backendTestBasic.test_dtype_backendm  s     !23]" ;;$$G % D %]]?G<]]?G<]]#89]]#<=]]<9]]#8)D]]#8)D

 __$NN5'"47G"4FVWG	  s|!!RXXi%8888<<XXoW=XXoW=XX38DXX7yIXXl':XX39EXX39E

 ]" ll3Ql/G}}Sq}1H
gx0/ s   %I""
I1rN   )	ra  rb  rc  objectzdatetime64[ns, UTC]rs   z	period[D]re  rl   c                     [         R                  " S[         R                  " / US905      nS nUS:X  a+  [         R                  " S[         R                  " / SS905      n[        X1SS0US9  g )NvaluerM   rs   re  r`  r^  r  )rC   rD   r   r   )r   r1   rN   r]   r   s        r)   test_read_empty_arrayTestBasic.test_read_empty_array  sp      \\"E2
 G||RXXb	:H
 	2B Ch	
r+   c                 &   US:w  a  [         R                  " U5        [        U" SSSS5      SS9 nUR                  UR	                  5       S9  [        UR                  US	9nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)
Nr   iodataparquetzsimple.parquetrb)mode)contentr   )	r.   rg  openserve_contentreadr   urlr   r   )r   
httpserverdatapathrF   r*   rW   r]   s          r)   test_parquet_read_from_url$TestBasic.test_parquet_read_from_url  s|     V'(44DEDQUV$$QVVX$6jnnV<B R 	b), RQs   2B
Br0   N)r   r   r   r   r   r   r.   r5   parametrizer   r   r  r  r  r%  r:  r@  rE  rK  rP  rU  rm  rr  network
single_cpur  r   r0   r+   r)   r   r     s    	D% [[],NOP PP

&%0%&S@))"%"%) /1b [[
	


& [[[[-  -r+   r   c                      \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  \" 5       S	S
9\R                  R                  \(       + SS
9\R                  R#                  S\\R(                  /5      S 5       5       5       rS r\R                  R.                  S 5       r\R                  R.                  S 5       r\R                  R.                  \R                  R#                  SS// /5      S 5       5       rS rS rS rS r\R                  R#                  S\S /SS/S9S 5       rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*\R                  R#                  S(S)S*/\RV                  " S+S,/\R                  R                  \,\-S-S.9S/9\.R\                  " S0S*S*S)S)5      \.R\                  " S0S*S*S*S*5      //5      S1 5       r/S2 r0S3 r1S4 r2\R                  R                  \3S5S
9S6 5       r4S7 r5S8r6g9):TestParquetPyArrowi  c                     Un[         R                  " SSSS9nUR                  S 5      nXCS'   / SQUS'   [        X15        g )NrP   r<   Europe/BrusselsrR   tzdatetime_tzTNTbool_with_none)rC   r\   r  r   )r   r1   r|   r]   dtis        r)   
test_basicTestParquetPyArrow.test_basic  sE     mmJ6GHnnT"=1 r+   c                 d    Un[         R                  " SSSS9US'   [        UUUSS/   SSS/0S	9  g )
NrP   r<   r  r  r  rl   rq   rB   r   )rC   r\   r   )r   r1   r|   r]   s       r)   test_basic_subset_columns,TestParquetPyArrow.test_basic_subset_columns  sI     MM*aDUV=5)*"Xu$56		
r+   c                     UR                  US9n[        U[        5      (       d   e[        U5      n[	        U5      nUR                  5       nS UR                  S'   [        R                  " XV5        g )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_provided=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  sd    &&b&1	)U++++Y'
:&<<>-1)*
c,r+   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nU R                  X![        S5        g )N   rI   r<   aaarA   zDuplicate column names found	rC   rD   rZ   r[   reshaperX   r!  r   r   r   r1   r]   s      r)   test_duplicate_columns)TestParquetPyArrow.test_duplicate_columns  sG    \\"))B-//15tE{KPPR!!"*6TUr+   c                 p    [         R                  " S[         R                  " SSS905      n[        X!5        g )NrS   1 dayr<   rQ   )rC   rD   timedelta_ranger   r  s      r)   test_timedelta!TestParquetPyArrow.test_timedelta  s*    \\3 2 27A FGH r+   c                 x    [         R                  " S/ SQ05      nU R                  X![        R                  5        g )NrS   rS   r:   ri   )rC   rD   r   r    ArrowExceptionr  s      r)   test_unsupported#TestParquetPyArrow.test_unsupported  s-    \\3./ 	**273I3IJr+   c                     [         R                  " SS[         R                  S9n[        R                  " US/S9n[
        (       a!  U R                  X1[        R                  5        g [        X15        g )Nr;   
   rM   fp16rv  rB   )
rZ   r[   float16rC   rD   r   r   r    r  r   )r   r1   rv  r]   s       r)   test_unsupported_float16+TestParquetPyArrow.test_unsupported_float16   sP     yyBbjj1\\tfX6..rw7M7M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                    [         R                  " SS[         R                  S9n[        R                  " US/S9n[
        R                  " 5        nU" U5      n[
        R                  " [        R                  5         UR                  XaS9  S S S 5        [        R                  R                  U5      (       a   e S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)Nr;   r  rM   r  r  )r   r*   )rZ   r[   r  rC   rD   r   r   r   r    r  r   osr   isfile)r   r1   r  rv  r]   path_strr   s          r)    test_unsupported_float16_cleanup3TestParquetPyArrow.test_unsupported_float16_cleanup
  s     yyBbjj1\\tfX6__(X&D))'*@*@A43 Bww~~d+++++	 AA s$   -C=C.C
C	C
C$c           
         [         R                  " [         R                  " [        S5      5      [         R                  " / SQ[         R                  " / SQ5      S9[         R                  " / SQ/ SQSS9S	.5      n[        X!5        g )
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_categorical#TestParquetPyArrow.test_categorical   sd    \\^^DN3^^=--.CD
 ^^2. 
" 	 r+   c                     [         R                  " S5      nUR                  " S0 UD6nSU0n[        UUUR                   S3UUS9  g )Ns3fs
filesystem/pyarrow.parquetr   r   r   r0   )r.   rg  S3FileSystemr   r	  )r   rF   s3_public_bucketr1   s3sor  s3kws           r)   test_s3_roundtrip_explicit_fs0TestParquetPyArrow.test_s3_roundtrip_explicit_fs5  sU    ""6*&&B$))**:;	
r+   c                 B    SU0n[        UUSUR                   S3UUS9  g )Nstorage_optionss3://r  r  r   r	  )r   rF   r  r1   r  s        r)   test_s3_roundtrip$TestParquetPyArrow.test_s3_roundtripB  s7     "4()..//?@	
r+   partition_colr?   c                 :   [         R                  " S5        UR                  5       nU(       aJ  UR                  [        R                  U[        R                  5      5      nSnXd   R                  U5      Xd'   [        UUUSUR                   S3SU0US US.SSS	9  g )
Nr  categoryr  z/parquet_dirr  )r   r   r  Tr:   )r   r   r   r   r   r   )
r.   rg  r!  ry   dictfromkeysrZ   int32r   r	  )r   rF   r  r1   r  r  expected_dfpartition_col_types           r)   test_s3_roundtrip_for_dir,TestParquetPyArrow.test_s3_roundtrip_for_dirN  s     	F#nn& %,,T]]="((-STK!+)4)C)J)J"*K& 	 )../|<*D1"/##'
 	
r+   c                    [         R                  " S5        [        5       nUR                  U5        [	        U5      nU(       a+  [
        (       d   UR                  R                  S5      Ul        [        R                  " X5        g )Nr    r   )
r.   rg  r   r   r   r   rB   ry   r   r   )r   rF   r   bufferdf_from_bufs        r)   test_read_file_like_obj_support2TestParquetPyArrow.test_read_file_like_obj_supportu  s_    I&V$"6*&:&: ) 1 1 8 8 ?I
i5r+   c                 |   [         R                  " S5        UR                  SS5        UR                  SS5        [         R                  " [        SS9   [        S5        S S S 5        [         R                  " [        SS9   UR                  S5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr    HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)r.   rg  setenvr   OSErrorr   r   )r   rF   monkeypatchs      r)   test_expand_user#TestParquetPyArrow.test_expand_user~  s    I&6=1=-8]]7*<=)* >]]7*<=  !12 >= >===s   BB-
B*-
B;c                     SS/nUnUR                  XS S9  [        X5        [        U5      R                  UR                  :X  d   eg )Nru   rq   r   r   r   r   r   shape)r   r  r1   r|   r   r]   s         r)   test_partition_cols_supported0TestParquetPyArrow.test_partition_cols_supported  sE     %
h4Ph7H%++rxx777r+   c                     SnU/nUnUR                  XS S9  [        X5        [        U5      R                  UR                  :X  d   eg )Nru   r  r  )r   r  r1   r|   r   partition_cols_listr]   s          r)   test_partition_cols_string-TestParquetPyArrow.test_partition_cols_string  sJ    -.
h4Ph<H%++rxx777r+   c                     U $ r$   r0   )xs    r)   <lambda>TestParquetPyArrow.<lambda>  s    Qr+   rl   zpathlib.Path)idsc                     SnU/nUnU" U5      nUR                  XS9  [        U5      R                  UR                  :X  d   eg )Nr@   )r   )r   r   r  )	r   r  r1   rF   r  r   r  r]   r   s	            r)   test_partition_cols_pathlib.TestParquetPyArrow.test_partition_cols_pathlib  sL     -."
d?D!''288333r+   c                 D    [         R                  " / / S9n[        X!5        g )N)r  rB   r   r  s      r)   test_empty_dataframe'TestParquetPyArrow.test_empty_dataframe  s    \\B/ r+   c                     SS K n[        R                  " SSS/05      nUR                  " UR                  " SUR
                  " 5       S9/5      nUR                  [        5      n[        X1SU0US9  g )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_schema)TestParquetPyArrow.test_write_with_schema  s[    \\3A-(s!I JK4x.@6Rr+   c           	         [         R                  " S5        [        R                  " [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / SQSS9S.5      nU(       a'  [
        (       a  [        X1UR                  S	S
05      S9  O[        X15        [        R                  " S[        R                  " / SQSS905      n[        X15        g )Nr    r9   ra  rM   UInt32ra   rl   r  r`   r   r   rS   rX  )r.   rg  rC   rD   r   r   r   ry   )r   r1   r   r]   s       r)    test_additional_extension_arrays3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\YYy8YYy9YY/x@
 "6"6Rbiie.EFR$\\3		/ IJK r+   c                    [         R                  " S5        [        R                  " S[        R                  " / SQSS905      n[        R
                  " SU5         U(       aS  [        (       a  UR                  S5      nOUR                  SU S	35      nUR                  R                  S5      Ul        OUR                  SU S	35      n[        XAUS
9  S S S 5        g ! , (       d  f       g = f)Nr    rS   ra   string[pyarrow]rM   string_storager   zstring[]r  )
r.   rg  rC   rD   r   r   r   ry   rB   r   )r   r1   r  r   r]   r   s         r)    test_pyarrow_backed_string_array3TestParquetPyArrow.test_pyarrow_backed_string_array  s    I&\\3		*:BS TUV/@!''!yy/H!yy7>2B!)DEH#+#3#3#:#:5#A 99w~.>a%@ARh7 A@@s   A:C
C,c                 B   [         R                  " S5        [        R                  " [        R                  R                  / SQ5      [        R                  " SSSS9[        R                  R                  [        R                  " SSSS95      S.5      n[        X!5        g )	Nr    ))r   r:   )r:   r;   )r<   rI   z
2012-01-01r<   D)rR   r  rI   )r`   rU   rV   )
r.   rg  rC   rD   IntervalIndexr  period_rangefrom_breaksr\   r   r  s      r)   test_additional_extension_types2TestParquetPyArrow.test_additional_extension_types  sx     	I&\\%%112JK__\13G%%11MM,D		
 	 r+   c           	      x    Sn[         R                  " S[         R                  " SSSS905      n[        X1SU0S9  g )	Nz2.6rS   z
2017-01-011nsr  r  rR   versionr   )rC   rD   r\   r   )r   r1   verr]   s       r)   test_timestamp_nanoseconds-TestParquetPyArrow.test_timestamp_nanoseconds  s9     \\3lPR STUy#.>?r+   c                 l   [         R                  " SS5        SU/-  n[        R                  " USU0S9nUS S  n[        (       a   UR
                  R                  S5      Ul        UR                  [        R                  R                  :w  a   SS KnUR
                  R                  R                  U5      nUR                  UR                  5       S-  5      nUR
                  R!                  U5      Ul        US   R"                  R!                  U5      US'   ['        XAS	US
9  g ! [$         a     Nf = f)Nr    11.0.0   index_as_colr  rv  nsr   <   F)r   r   )r.   rg  rC   rD   r	   r  as_unittzinforv   timezoneutcpytzr  	utcoffsetFixedOffsettotal_seconds
tz_convertdtr   r   )	r   r1   r~   idxr]   r   r.  offsetr  s	            r)   test_timezone_aware_index,TestParquetPyArrow.test_timezone_aware_index  s   Ix0+,,\\>3*?@ a5%^^33D9HN#**h.?.?.C.CCV ../GH%%f&:&:&<r&AB!)!:!:2!>+3N+C+F+F+Q+QRT+U(UXF  s   D& &
D32D3c                 8   [         R                  " S5        [        R                  " S[	        [        S5      5      05      n[        R                  " 5        nUR                  X1S9  [        X1S/S9nS S S 5        [        W5      S:X  d   eg ! , (       d  f       N = f)Nr    rS   r<   r   rS   r   r   r  r:   )r.   rg  rC   rD   rX   rY   r   r   r   r   r  )r   r1   r]   r   r   s        r)   test_filter_row_groups)TestParquetPyArrow.test_filter_row_groups  sv    I&\\3U1X/0__$MM$M*!$^4DEF  6{a s   B
Bc                 (   [         R                  " [        R                  R	                  S5      R                  S5      / SQS9n[        R                  " 5        nUR                  XAS9  [        XA5      nS S S 5        U(       a@  [        WR                  [         R                  R                  R                  5      (       d   eg [        WR                  [         R                  R                  R                  5      (       d   eg ! , (       d  f       N= f)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_manager,TestParquetPyArrow.test_read_parquet_manager  s    \\II!!!$44W=
 __$MM$M*!$+F  fkk277+<+<+I+IJJJJfkk277+<+<+I+IJJJJ s   D
Dc           	         SS K nUn[        R                  " SSSS9nUR                  S 5      nXTS'   / SQUS'   UR                  R                  U5      nUR                  [        R                  S	9n[        (       ah  US
   R                  S5      US
'   US   R                  S5      US'   US   R                  [        R                  " UR                  " SSS95      5      US'   [        UUSS0US9  g )Nr   rP   r<   r  r  r  r  r  )types_mapperrv   ztimestamp[us][pyarrow]rw   us)unitr  r`  r    r*   r   r   )r    rC   r\   r  Tablefrom_pandas	to_pandas
ArrowDtyper
   ry   	timestampr   )r   r1   r|   r    r]   r  pa_tabler   s           r)   &test_read_dtype_backend_pyarrow_config9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config%  s     mmJ6GHnnT"=1==,,R0%%2==%A#+J#7#>#>?W#XHZ ,45H,I,P,P(-H() '/}&=&D&Dg//T>OPQ'H]# 	()4		
r+   c                 *   [         R                  " SSS/0[         R                  " SS/SS9SS	9nUR                  5       nS
S Kn[        UR                  5      [        S5      :  a   UR                  R                  S5      Ul        [        UUSS0US9  g )NrS   r:   r;   r<   rI   testr	  zint64[pyarrow])r  rN   r   r$  r`  r    rK  )
rC   rD   rE   r!  r    r   r   r  ry   r   )r   r1   r]   r   r    s        r)   ,test_read_dtype_backend_pyarrow_config_index?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_indexC  s    \\1a&M1a&v!>FV
 7797&&''(*;;%^^223CDHN()4		
r+   rB   r   r:   rb   rc   z*https://github.com/apache/arrow/pull/44171)r   r   r     c           	          [         R                  " [        S5      [        [        SS5      5      S.5      nX#l        [        X15        g )NrH   r:   rI   r   r   )r   r1   rB   r]   s       r)   test_columns_dtypes_not_invalid2TestParquetPyArrow.test_columns_dtypes_not_invalidS  s3    & \\T%[eAqk9JKL
 r+   c                 l    [         R                  " [         R                  " / SQSS9S9n[        X!5        g )Nr  custom namerV  r0  rC   rD   rE   r   r  s      r)   test_empty_columns%TestParquetPyArrow.test_empty_columnsk  s#    \\} MN r+   c                     US-  n[         R                  " SS/0S9nSS0Ul        UR                  X2S9  [	        X2S9nUR                  UR                  :X  d   eg )Nztest_df_metadata.pr:   rv  test_attributer   )rC   rD   attrsr   r   )r   r  r1   r   r]   new_dfs         r)   test_df_attrs_persistence,TestParquetPyArrow.test_df_attrs_persistencep  s[    ..\\A3x($a(
d&d.||rxx'''r+   c           
          US-  n[         R                  " SSS/0SS/S9nUR                  XBS9  [         R                  " SS	5         [	        XBS9nS S S 5        [         R
                  " [        R                  S
9n[         R                  " SSS/0U[         R                  " SS/US9[         R                  " S/[        (       a  U(       d  [        OUS9S9n[        R                  " WU5        g ! , (       d  f       N= f)Nztest_string_inference.prS   r  yrT   )rv  r  r   future.infer_stringTna_valuerM   )rv  rN   r  rB   )rC   rD   r   r   r   StringDtyperZ   rx   rE   r   ro  r   r   )	r   r  r1   r   r   r]   r   rN   r   s	            r)   test_string_inference(TestParquetPyArrow.test_string_inferencex  s    33\\c3Z0c
C
d&4d;!$2F </<<Sz"((C:U3HH''0B 		

 	fh/ <;s   
C//
C=znot supported before 11.0c           	         SS K nUS-  n[        R                  " S[        S5      /0SS9nUR	                  X2R                  SUR                  S5      4/5      S9  [        U5      n[        (       a  [        R                  " SS	/0S
S9nO![        R                  " S[        S5      /0SS9n[        R                  " XV5        g )Nr   z	decimal.prS   z123.00r  rM   r%  )r   123zstring[python]ro  )r    rC   rD   r   r   r   
decimal128r   r   r   r   )r   r  r1   r   r]   r   r   s          r)   test_roundtrip_decimal)TestParquetPyArrow.test_roundtrip_decimal  s     	+%\\3!2 34<MN
d99sBMM!4D.E-F#GHd#||S5'N:JKH||S78+<*=$>hOH
f/r+   c                 ,   SS K nSS KJn  US-  nUR                  SUR	                  / SQUR                  5       5      05      nUR                  XT5        [        R                  " SS5         [        U5      nS S S 5        [        R                  " S/ SQ0[        R                  " [        R                  S9[        R                  " S/[        R                  " [        R                  S9S9S	9n[        R                   " WU5        g ! , (       d  f       N= f)
Nr   zlarge_string.prS   )NrT   r`   rk  Trl  rM   )rv  rN   rB   )r    pyarrow.parquetrw  rh  r   large_stringri  rC   r   r   rD   rn  rZ   rx   rE   r   r   )r   r  r1   rj  r   rh  r   r   s           r)   #test_infer_string_large_string_type6TestParquetPyArrow.test_infer_string_large_string_type  s    $**#rxx(8"//:KLMN
u#4d;!$'F <<<'(.."&&1HHcU".."&&*IJ

 	fh/ <;s   +D
Dr0   N)7r   r   r   r   r  r  r  r  r  r  r  r.   r5   r6   r   skipifr   r  r   pathlibPathr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r6  r;  rE  rR  rW  r&   r   NotImplementedErrorrv   r[  r`  rg  ro  r	   rt  ry  r   r0   r+   r)   r  r    s   	!

-V
!K% [[?   [[009NO[[[3*=>, ? P,!* [[

 

 [[	
 	
 [[[[E	

 
>6388 [[c;'h-G  	4	4!
S!&8! @GB K
<
  [[FLL kk''(.G (  !!$1a3!!$1a3	
$!%$!!
(0* [[,5PQ0 R00r+   r  c                   R   \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  S	 5       rS
 rS rS rS r\R                  R'                  \" 5       SS9S 5       rS rS rS rS rS rS rS rS r\R                  R'                  \" 5       SS9S 5       rSrg)TestParquetFastParqueti  c                     Un[         R                  " SSSS9nUR                  S 5      nXCS'   [         R                  " SSS9US'   [	        X15        g )	NrP   r<   z
US/Easternr  r  r  rQ   	timedelta)rC   r\   r  r  r   )r   r7   r|   r]   r  s        r)   r  !TestParquetFastParquet.test_basic  sM    mmJlCnnT"=,,Wa@; r+   c           	         [         R                  " [        S5      [        [        SS5      5      S.5      n[        nSnSS/Ul        U R                  X!X45        SS/Ul        U R                  X!X45        [        R                  " S	SSSS5      [        R                  " S	SSSS5      /Ul        U R                  X!X45        g )
NrH   r:   rI   r   r=  r   rb   rc   rY  )rC   rD   rX   rY   r>  rB   r   rv   )r   r7   r]   errr   s        r)   test_columns_dtypes_invalid2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\T%[eAqk9JKL, V
!!"#3 f%
!!"#3 dAq!Q/dAq!Q/

 	!!"#3r+   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nSnU R                  X![        U5        g )Nr  rI   r<   r  rA   z9Cannot create parquet dataset with duplicate column namesr  r   r7   r]   r   s       r)   r  -TestParquetFastParquet.test_duplicate_columns  sK    \\"))B-//15tE{KPPRI!!"*c:r+   c                    SS K n[        UR                  5      [        S5      :  aR  [        [        R                  5      [        S5      :  a,  UR	                  [
        R                  R                  SS95        [        R                  " S/ SQ05      n[        R                  " SS[        R                  S	/0S
S9n[        XAUSS9  g )Nr   	2024.11.0z2.0.0z$fastparquet uses np.float_ in numpy2r   rS   )TNFr[  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_none*TestParquetFastParquet.test_bool_with_none  s    ;**+gk.BBwNNH
WH !!B " 
 \\3 345<<sBFFC&8 9K 	(Fr+   c           	          [         R                  " S[         R                  " SSSS905      nU R                  X![        S 5        [         R                  " S/ SQ05      nSnU R                  X![        U5        g )NrS   2013Mr<   r  r  z"Can't infer object conversion type)rC   rD   r  r   r   r  s       r)   r  'TestParquetFastParquet.test_unsupported  s`    \\3S! LMN!!"*d; \\3./2!!"*c:r+   c                     [         R                  " S[         R                  " [        S5      5      05      n[	        X!5        g )NrS   rH   )rC   rD   r  rX   r   )r   r7   r]   s      r)   r  'TestParquetFastParquet.test_categorical  s*    \\3tE{ ;<= r+   c                    S[        [        S5      5      0n[        R                  " U5      n[        R
                  " 5        nUR                  XAS SS9  [        XAS/S9nS S S 5        [        W5      S:X  d   eg ! , (       d  f       N = f)NrS   r<   r:   )r*   r   row_group_offsetsr9  r:  )	rX   rY   rC   rD   r   r   r   r   r  )r   r7   rU   r]   r   r   s         r)   r;  -TestParquetFastParquet.test_filter_row_groups  sp    $uQx.!\\!___$MM$tqMQ!$^4DEF  6{a s   A99
Bc           	      D    [        UUSUR                   S3SU0S US.S9  g )Nr  z/fastparquet.parquetr  )r   r  r  r  )r   rF   r  r7   r  s        r)   r  (TestParquetFastParquet.test_s3_roundtrip	  s7     	)..//CD*D1)-$G	
r+   c                     SS/nUnUR                  USUS S9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )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  4TestParquetFastParquet.test_partition_cols_supported  s|     %
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r+   c                     SnUnUR                  USUS S9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nru   r   r  r   Fr:   r  r  s           r)   r  1TestParquetFastParquet.test_partition_cols_string$  sx    
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r+   c                     SS/nUnUR                  USS US9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nru   rq   r   )r*   r   partition_onr   Fr;   r  r  s           r)   test_partition_on_supported2TestParquetFastParquet.test_partition_on_supported4  s|     %
 '	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r+   c           	          SS/nUnSn[         R                  " [        US9   UR                  USS UUS9  S S S 5        g ! , (       d  f       g = f)Nru   rq   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r*   r   r  r   )r.   r   r   r   )r   r  r7   r|   r   r]   r   s          r)   3test_error_on_using_partition_cols_and_partition_onJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onD  sX     !%  	 ]]:S1MM$ +-   211s	   ?
Azfastparquet writes into Indexr   c                 b    [         R                  " 5       nUR                  5       n[        X!US9  g )Nr  )rC   rD   r!  r   r   r7   r]   r   s       r)   r  +TestParquetFastParquet.test_empty_dataframeW  s$     \\^779(3r+   c                 |   SS K n[        UR                  5      [        S5      :  aN  [        UR                  5      [        S5      :  a,  UR                  [        R
                  R                  SS95        SU/-  n[        R                  " USU0S9nUR                  5       nS	UR                  l        [        XaUS
9  g )Nr   z2022.12r  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   r4  r]   r   s           r)   r6  0TestParquetFastParquet.test_timezone_aware_index^  s    ;**+gi.@@W##F
K F! !!I "  +,,\\>3*?@779%(3r+   c           	         [         R                  " SSS/05      n[        R                  " 5        nUR	                  U5        [
        R                  " [        SS9   [        R                  " [        5         [        USSS9  S S S 5        S S S 5        [
        R                  " [        SS9   [        USS	S
9  S S S 5        S S S 5        g ! , (       d  f       NL= f! , (       d  f       NU= f! , (       d  f       N9= f! , (       d  f       g = f)NrS   r:   r;   z!not supported for the fastparquetr   r   T)r*   use_nullable_dtypesr    r_  )rC   rD   r   r   r   r.   r   r   r   r   r   )r   r7   r]   r   s       r)   &test_use_nullable_dtypes_not_supported=TestParquetFastParquet.test_use_nullable_dtypes_not_supportedu  s    \\3A-(__$MM$z1TU//> mQUV ? V z1TUT-yQ V  ?> VU VU sS   +C;C6CC
!C;+C*7C;
CC
C'	#C;*
C8	4C;;
D	c                 n   [         R                  " S5       n[        R                  " U5      R	                  S5        [
        R                  " [        SS9   [        USS9  S S S 5        [        R                  " U5      R                  SS9  S S S 5        g ! , (       d  f       N:= f! , (       d  f       g = f)	Ntest.parquets   breakit r   r   r   F)
missing_ok)
r   r   r|  r}  write_bytesr.   r   	Exceptionr   unlink)r   r   s     r)   $test_close_file_handle_on_read_error;TestParquetFastParquet.test_close_file_handle_on_read_error  sx    __^,LL**:6y3T-8 4 LL%%%7 -,33 -,s#   ?B&B!+B&
B#	B&&
B4c                 d   [         R                  " SS/SS/S.S9n[        R                  " S5       n[	        UR                  5       S5       nUR                  U5        S S S 5        [        X1S9nS S S 5        [        R                  " WU5        g ! , (       d  f       N7= f! , (       d  f       N7= f)Nr   r:   r>   rc  r  wbr   )	rC   rD   r   r   r{  encoder   r   r   )r   r*   r]   r   rW   r   s         r)   test_bytes_file_name+TestParquetFastParquet.test_bytes_file_name  s    \\aV1a&9:__^,dkkmT*aa  + "$6F	 -
 	fb)	 +* -,s#   B!BB!
B	B!!
B/c                 p   [         R                  " S5        [        R                  " SS/SS/S.S9n[        R
                  " 5        n[         R                  " [        SS9   UR                  USSS	9  S S S 5        S S S 5        [        R
                  " 5        n[        R                  " U5      R                  S
5        [         R                  " [        SS9   [        USSS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr   r   r:   r>   rc  zfilesystem is not implementedr   r=   r*   r  rb   )r.   rg  rC   rD   r   r   r   r~  r   r|  r}  r  r   r   r]   r   s      r)   test_filesystem_notimplemented5TestParquetFastParquet.test_filesystem_notimplemented  s    M*\\aV1a&9:__$#+J d=UK  __$LL**62#+J T-EJ     H   D!C43D?D'D#D'4
D	>D
D
D$	 D''
D5c                 p   [         R                  " S5        [        R                  " SS/SS/S.S9n[        R
                  " 5        n[         R                  " [        SS9   UR                  USSS	9  S S S 5        S S S 5        [        R
                  " 5        n[        R                  " U5      R                  S
5        [         R                  " [        SS9   [        USSS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr    r   r:   r>   rc  z1filesystem must be a pyarrow or fsspec FileSystemr   r=   r  rb   )r.   rg  rC   rD   r   r   r   r   r   r|  r}  r  r   r  s      r)   test_invalid_filesystem.TestParquetFastParquet.test_invalid_filesystem  s    I&\\aV1a&9:__$"U d9G  __$LL**62"U T)F     r  c           	         [         R                  " S5      n[        R                  " SS/SS/S.S9n[        R
                  " 5        n[         R                  " [        SS9   UR                  USUR                  5       S	S
0S9  S S S 5        S S S 5        [        R
                  " 5        n[        R                  " U5      R                  S5        [         R                  " [        SS9   [        USUR                  5       S	S
0S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nz
pyarrow.fsr   r:   r>   rc  z8storage_options not supported with a pyarrow FileSystem.r   r    r=   re   )r*   r  r  rb   )r.   rg  rC   rD   r   r   r   r~  r   LocalFileSystemr|  r}  r  r   )r   pa_fsr]   r   s       r)   .test_unsupported_pa_filesystem_storage_optionsETestParquetFastParquet.test_unsupported_pa_filesystem_storage_options  s   ##L1\\aV1a&9:__$#P $$446%*EN	  	  __$LL**62#P $$446%*EN		     sH   D'!#DD')?E	(D8E	
D$	 D''
D58
E	E		
Ec           	      Z   Sn[         R                  " S[        [        SS5      5      05      n[        R
                  " S5       nUR                  U5        [        R                  " [        US9   [        USS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rq   r:   rI   ztmp.parquetr   numpy)r`  )rC   rD   rX   rY   r   r   r   r.   r   r   r   )r   r*   r   r]   r   s        r)   test_invalid_dtype_backend1TestParquetFastParquet.test_invalid_dtype_backend  s{    % 	 \\5$uQ{"345__]+tMM$z5T9 6 ,+55 ,+s$   +B/B:B
B	B
B*c                     [         R                  " [         R                  " / SQSS9S9n[         R                  " [         R                  " / SQSS9S9n[        X!US9  g )Nr  r^  rV  r0  r  r_  r  s       r)   r`  )TestParquetFastParquet.test_empty_columns  s@     \\} MN<<bhh]&ST(3r+   r0   N) r   r   r   r   r  r  r  r  r  r  r;  r.   r5   r  r  r  r  r  r  r{  r   r  r6  r  r  r  r  r  r  r  r`  r   r0   r+   r)   r  r    s    !4*;G"	;!  [[
 
/ / / & [[+-6UV4 W44.	R8*K G 8	: [[+-6UV4 W4r+   r  )	NNNNNTFTr;   )M__doc__rv   decimalr   ru  r   r  r|  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&   r{  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   r  r  r0   r+   r)   <module>r     sm       	    . -    ' M KKST
KKG
 "")) P"#6t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0db4T b4e$  M  s$   $L +L LLL! L!