+
    xȇi#                        R t ^ RIt^ RIHt ^ RIHt ^ RIt^ RIt^ RIt	^ RI
t
^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RIt^ RIHt ^ RIHt ^ RIHtHtHtHtH t   ^ RI!t!R	t" ^ RI$t$R	t%]
PL                  PO                  R4      ]
PL                  PO                  R4      .t(]
PR                  ! ]
PT                  ! R]
PL                  PW                  ]%'       * RR7      ]
PL                  PY                  ]! 4       RR
R7      .R7      ]
PT                  ! R]
PL                  PW                  ]"'       * RR7      R7      .R7      R 4       t-]
PR                  R 4       t.]
PR                  R 4       t/]
PR                  R 4       t0]
PR                  R 4       t1]
PR                  R 4       t2]
PR                  ! ]P                  Pg                  ]Ph                  4      ]P                  Pg                  ]Pj                  Pl                  4      ]P                  Pg                  ]Pj                  Pn                  4      ]P                  Pq                  RR4      ]P                  Pq                  RR4      ]P                  Pq                  RR4      ]P                  Pq                  R R4      .R7      R! 4       t9R4R" lt:R# t;R$ t<R% t=R& t>R' t?R( t@R) tAR* tBR+ tC ! R, R-4      tD ! R. R/]D4      tE ! R0 R1]D4      tF ! R2 R3]D4      tGR#   ]# d    R
t" ELi ; i  ]# d    R
t% ELi ; i)5ztest parquet compatN)Decimal)BytesIO)using_string_dtype)is_platform_windows)pa_version_under15p0pa_version_under17p0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fastparquet is not installedreasonTODO(infer_string) fastparquetr   strictmarkspyarrowpyarrow is not installed)paramsc                     V P                   # Nparamrequests   &l/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/pandas/tests/io/test_parquet.pyenginer#   :   s    2 ==    c                  J    \         '       g   \        P                  ! R 4       R# )r   r   )_HAVE_PYARROWpytestskip r$   r"   par*   V   s    =./r$   c                     \         '       g   \        P                  ! R 4       \        4       '       d1   V P	                  \        P
                  P                  RRR7      4       R# )r   r   Fr   r   )_HAVE_FASTPARQUETr'   r(   r   applymarkermarkxfailr    s   &r"   fpr0   ]   sI    23KK%EeT	
 r$   c                  j    \         P                  ! R . RORR/\         P                  ! R R.4      R7      # )ABfoocolumns         )pd	DataFrameIndexr)   r$   r"   	df_compatr>   h   s)    <<ie4bhhSz>RSSr$   c                      \         P                  ! R \        R4      R\        \        ^^4      4      R\        P
                  ! RRRR7      R. ROR	\         P                  ! R
^R7      /4      p V # )aabcbd      @      @float64dtypeef20130101periodsTFT)r;   r<   listrangenparange
date_range)dfs    r"   df_cross_compatrU   m   s]    	eeAqk"395$z15
	

B Ir$   c                      \         P                  ! R \        R4      RR\        P                  R.R. ROR. ROR. ROR\        \        ^^4      4      R	\        P                  ! ^^4      P                  R
4      R\        P                  ! RRRR7      RR\        P                  R.R. ROR\         P                  ! R^RR7      R\         P                  ! R4      \         P                  \         P                  ! R4      ./4      # )stringrA   string_with_nanr@   cstring_with_nonebytesunicodeintuintu1floatrD   rE   rF   rG   float_with_nan       @      @booldatetimerK   nsrM   unitdatetime_with_nat20130103r@   NrY   )   foo   bars   bazr4   barbazrN   )r;   r<   rO   rQ   nanrP   rR   astyperS   	TimestampNaTr)   r$   r"   df_fullru      s    <<d5kRVVS1 0-,4a$BIIaO**40RYYsCy9sBFFC0'j!$G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                     V P                   # r   r   r    s   &r"   timezone_aware_date_listrw      s     ==r$   c                  a aaaaaaa	 \        V\        P                  4      '       g   \        R4      hS;'       g    RR/oS;'       g    / oSf   S oV'       d   VSR&   VSR&   V	VVV VVVV3R lpSf   VoV! V
4       R# V! V
4       R# )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
z temp_file must be a pathlib.PathcompressionNr#   c           	         < \        V 4       FS  pSP                  ! S3/ S
B  \        S3/ S	B pR S9   d   RSP                  R&   \        P
                  ! SVSSSR7       KU  	  R# )rX   N)check_names
check_likecheck_dtyper8   rX   )rP   r   r   loctmassert_frame_equal)repeat_actualr}   r|   r{   rT   expectedpathread_kwargswrite_kwargss   &  r"   compare!check_round_trip.<locals>.compare   se    vAMM$/,/!$6+6F H,5912!!'%' r$   )
isinstancepathlibPath
ValueError)rT   	temp_filer#   r   r   r   r   r{   r|   r}   r   r   s   f&&fffffff& r"   check_round_tripr      s    F i..;<<88M4#8L##K!'X &H  |r$   c                    ^ RI Hp VP                  V RR7      pVP                  P                  P                  V8X  g   Q hR# )zCheck partitions of a parquet file are as expected.

Parameters
----------
path: str
    Path of the dataset.
expected: iterable of str
    Expected partition names.
Nhive)partitioning)pyarrow.datasetdatasetr   schemanames)r   r   dsr   s   &&  r"   check_partition_namesr      s9     !jjFj3G&&,,888r$   c                     R p\         P                  ! \        VR7      ;_uu_ 4        \        WRR4       RRR4       R#   + '       g   i     R# ; i)z.engine must be one of 'pyarrow', 'fastparquet'matchr4   ro   N)r'   raisesr   r   )r>   r   msgs   && r"   test_invalid_enginer      s3    
:C	z	-	-ue< 
.	-	-	-s	   ?A	c                     V'       d-   \         '       g!   V P                  P                  R 4      V n        \        P                  ! RR4      ;_uu_ 4        \        W4       RRR4       R#   + '       g   i     R# ; i)strio.parquet.enginer   N)r   r6   rr   r;   option_contextr   )r>   r*   using_infer_stringr   s   &&&&r"   test_options_pyr     sO    "6"6%--44U;				.		:	:. 
;	:	:	:s   A**A;	c                     \         P                  ! R R4      ;_uu_ 4        \        W4       RRR4       R#   + '       g   i     R# ; i)r   r   Nr;   r   r   )r>   r0   r   s   &&&r"   test_options_fpr   
  s/     
		.	>	>. 
?	>	>	>	   6A	c                     \         P                  ! R R4      ;_uu_ 4        \        W4       RRR4       R#   + '       g   i     R# ; i)r   autoNr   )r>   r0   r*   r   s   &&&&r"   test_options_autor     s/     
		.	7	7. 
8	7	7	7r   c                 H   \        \        R 4      \        4      '       g   Q h\        \        R4      \        4      '       g   Q h\        P
                  ! RR 4      ;_uu_ 4        \        \        R4      \        4      '       g   Q h\        \        R 4      \        4      '       g   Q h\        \        R4      \        4      '       g   Q h RRR4       \        P
                  ! RR4      ;_uu_ 4        \        \        R4      \        4      '       g   Q h\        \        R 4      \        4      '       g   Q h\        \        R4      \        4      '       g   Q h RRR4       \        P
                  ! RR4      ;_uu_ 4        \        \        R4      \        4      '       g   Q h\        \        R 4      \        4      '       g   Q h\        \        R4      \        4      '       g   Q h RRR4       R#   + '       g   i     EL+; i  + '       g   i     L; i  + '       g   i     R# ; i)r   r   r   r   N)r   r   r   r   r;   r   )r0   r*   s   &&r"   test_options_get_enginer     s}   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	7*V,k::::*Y/====*]3_EEEE 
8	7 
;	:	:
 
?	>
 
8	7	7s'   "A$G).A$G=:A$H)G:	=H	H!	c                  D   ^ RI Hp  V P                  R4      pV P                  R4      p\        '       g   RM$\	        \
        P                  4      \	        V4      8  p\        '       g   RM$\	        \        P                  4      \	        V4      8  p\        ;'       d    V'       * p\        ;'       d    V'       * pV'       Eg   V'       Eg   V'       d@   RV R2p\        P                  ! \        VR7      ;_uu_ 4        \        R4       R	R	R	4       M:R
p\        P                  ! \        VR7      ;_uu_ 4        \        R4       R	R	R	4       V'       dA   RV R2p\        P                  ! \        VR7      ;_uu_ 4        \        R4       R	R	R	4       R	# Rp\        P                  ! \        VR7      ;_uu_ 4        \        R4       R	R	R	4       R	# R	# R	#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R	# ; i  + '       g   i     R	# ; i)    )VERSIONSr   r   FzPandas requires version .z. or newer of .pyarrow.r   r   Nz6Unable to find a usable engine; tried using: 'pyarrow'z. or newer of .fastparquet.z3Use pip or conda to install the fastparquet package)pandas.compat._optionalr   getr&   r
   r   __version__r,   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   ,  s    1 i(Jm,J } 	W(()GJ,??  !  	[,,-
0CC  #>>+>'>N&BB/B+BN>../
|;RSE{%886" 98 ME{%886" 9 /
|;VWE{%886" 98 JE{%886" 98# #1> 98 98
 988 988s0   =G8G'>G::HG$	'G7	:H	H	c                     T pVP                  W1R R7       \        W2R7      p\        P                  ! WT4       \        W2RR.R7      p\        P                  ! WTRR.,          4       R # N)r#   ry   r#   r@   rC   )r#   r6   r   r   r   r   rU   r*   r0   r   rT   results   &&&&  r"   test_cross_engine_pa_fpr   W  sW     
BMM)DM9)/F&%)c
CF&c3Z.1r$   c                     T pVP                  W2R R7       \        W1R7      p\        P                  ! WT4       \        W1RR.R7      p\        P                  ! WTRR.,          4       R # r   r   r   s   &&&&  r"   test_cross_engine_fp_par   d  sU    	BMM)DM9)/F&%)c
CF&c3Z.1r$   c                   ,   a  ] tR tRt o R tR tRtV tR# )Baseiq  c           	         \         P                  ! W4R 7      ;_uu_ 4        \        WVRR7       RRR4       R#   + '       g   i     R# ; i)r   Nry   )r'   r   r   )selfrT   r#   excerr_msgtemp_file_paths   &&&&&&r"   check_error_on_writeBase.check_error_on_writer  s,    ]]3..r6tD /...s	   9A
	c           	         \         P                  ! V4      ;_uu_ 4        \        WVR R7       R R R 4       R #   + '       g   i     R # ; i)Nr   )r   external_error_raisedr   )r   rT   r#   r   r   s   &&&&&r"   check_external_error_on_write"Base.check_external_error_on_writew  s.    %%c**r6tD +***s	   8A		r)   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classdict__s   @r"   r   r   q  s     E
E Er$   r   c                   n  a  ] tR tRt o R tR t]P                  P                  R. RO4      R 4       t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR t]P                  P                  R. RO4      R 4       t]P                  P.                  ]P                  P0                  R 4       4       tRtV tR# )	TestBasici}  c                    \         P                  ! . RO4      ^R\         P                  ! R4      \        P                  ! . RO4      3 F  pRpV P                  W1\        WB4       K  	  R# )r8   r4   rK   z+to_parquet only supports IO with DataFramesNr7   )r;   Seriesrs   rQ   arrayr   r   )r   r#   r   objr   s   &&&  r"   
test_errorTestBasic.test_error~  sR    IIi LL$HHY
C @C%%c:sN
r$   c                    \         P                  ! R \        R4      R\        \        ^^4      4      /4      pRR.Vn        \        W2V4       R# )rW   rA   r]   r4   ro   Nr;   r<   rO   rP   r6   r   )r   r#   r   rT   s   &&& r"   test_columns_dtypesTestBasic.test_columns_dtypes  s?    \\8T%[%eAqk9JKL U^
/r$   ry   Nc                Z    \         P                  ! R . RO/4      p\        WCVRV/R7       R# )r2   ry   r   Nr7   r;   r<   r   )r   r#   ry   r   rT   s   &&&& r"   test_compressionTestBasic.test_compression  s)    \\3	*+60L	
r$   c                    \         P                  ! R \        R4      R\        \        ^^4      4      /4      p\         P                  ! R \        R4      /4      p\	        VVVVRR ./R7       R# )rW   rA   r]   r6   r   r   Nr;   r<   rO   rP   r   )r   r#   r   rT   r   s   &&&  r"   test_read_columnsTestBasic.test_read_columns  s]    \\8T%[%eAqk9JKL<<4; 78"XJ/	
r$   c                    \         P                  ! R \        \        ^4      4      R\        R4      /4      p\         P                  ! R ^ ^./4      p\	        VVVVRR./RR.RR ./^R7       R# )	r]   partaabbpartition_colsfiltersr6   )r   r   r   r   N)r   ==r@   r   )r   r#   tmp_pathrT   r   s   &&&  r"   test_read_filtersTestBasic.test_read_filters  sv    \\tE!H~V
 <<A0*VH5"%8$99ugN	
r$   c                   \         P                  ! R 4       \        P                  ! R. RO/4      p\	        W!R 4       . R	O\        P
                  ! R^RR7      \        R4      . R
O.pV FU  pWBn        \        V\        P                  4      '       d!   VP                  P                  R4      Vn        \	        W!R 4       KW  	  . ROVn        RVP                  n        \	        W!R 4       R# )r   r2   rK   rf   rg   rA   Nr4   r7   )r9   r:      )r8   r:   r   )r   r8   r9   )r'   importorskipr;   r<   r   rS   rO   indexr   DatetimeIndex
_with_freqname)r   r   rT   indexesr   s   &&   r"   test_write_indexTestBasic.test_write_index  s    I&\\3	*+	2 MM*ad;K	
 EH%!1!12288..t4RI6	  	2r$   c                    Tp\         P                  ! R . RO/4      p\         P                  P                  . RO4      pWTn        \        WBV4       R# )r2   Nr7   )r@   r8   )r@   r9   )rB   r8   )r;   r<   
MultiIndexfrom_tuplesr   r   )r   r*   r   r#   rT   r   s   &&&   r"   test_write_multiindexTestBasic.test_write_multiindex  s>    \\3	*+))*HI/r$   c           
        Tp\         P                  ! R RRRR7      p\         P                  ! \        P                  P                  ^4      P                  ^\        V4      ,          ^34      \        R4      R7      p\         P                  P                  RR.V.R	R
.R7      pVP                  RR7      pWg3 F2  pWn        \        WRV4       \        VVVRRR./VRR.,          R7       K4  	  R# )z01-Jan-2018z01-Dec-2018MSrf   )freqrh   ABCr5   Level1Level2leveldater   Nr6   r2   r3   r   r   )r;   rS   r<   rQ   randomdefault_rngstandard_normallenrO   r  from_productcopyr   r   )	r   r*   r   r#   datesrT   index1index2r   s	   &&&      r"   test_multiindex_with_columns&TestBasic.test_multiindex_with_columns  s    m]DQ\\II!!!$44a#e*na5HIK
 ++!5)'61B , 
 4(%EHRF3&c
3S#J	 &r$   c           	        \         P                  ! R . ROR. RO/4      pRRRR/pVP                  RR7      p\        W2WVR7       \         P                  ! R . ROR. RO/. ROR	7      p\        W2WVR7       . RO. RO.p\         P                  ! R
\	        \        ^4      4      R\        ^4       Uu. uF  qw) NK  	  up/VR	7      pVP                  RR7      p\        W2WVR7       R# u upi )r@   rB   ry   Nr   FT)dropr   r   r   onetwor7   )qrs)zyxwvutsrro   ro   rp   rp   r4   r4   quxr-  r$  r%  r$  r%  r$  r%  r$  r%  )r;   r<   reset_indexr   rO   rP   )r   r#   r   rT   r   r   arraysis   &&&     r"   test_write_ignoring_index#TestBasic.test_write_ignoring_index  s     \\3	3@A%tWe< >>t>,6x	

 \\)S/2:O
 	6x	
 ED
 \\DqNEa+A1B+AB&
 >>t>,6x	
	 ,Bs   /C&c                <   \         P                  P                  . RO4      p\         P                  ! \        P
                  P                  ^4      P                  R4      VR7      pVR8X  d   V P                  WA\        RV4       R# VR8X  d   \        WBV4       R# R# )r@   r5   r   Column name must be a stringr   Nr  )r   r:   )r;   r  r  r<   rQ   r  r  r  r   	TypeErrorr   )r   r#   r   
mi_columnsrT   s   &&&  r"   test_write_column_multiindex&TestBasic.test_write_column_multiindex  s    ]]../MN
\\II!!!$44V<j
 ]"%%I'Ey y RF3 !r$   c                0   . RO. R	O.p\         P                  ! \        P                  P	                  ^4      P                  R
4      VR7      pRR.VP                  n        VR8X  d   V P                  WA\        RV4       R# VR8X  d   \        WBV4       R# R# )ro   r5   r  r  r   zColumn namer   Nr,  )r8   r9   r8   r9   r8   r9   r8   r9      r<  )r;   r<   rQ   r  r  r  r6   r   r   r   r   r   r#   r   r0  rT   s   &&&  r"   &test_write_column_multiindex_nonstring0TestBasic.test_write_column_multiindex_nonstring"  s    
 E$
 \\II!!!$44V<f
 %h/

]"%%b*mYWy RF3 !r$   c                    Tp. RO. RO.p\         P                  ! \        P                  P	                  ^4      P                  R4      VR7      pRR.VP                  n        \        WRV4       R# )ro   r5   	ColLevel1	ColLevel2Nr,  r.  r;  )	r;   r<   rQ   r  r  r  r6   r   r   r   r*   r   r#   r0  rT   s   &&&   r"   #test_write_column_multiindex_string-TestBasic.test_write_column_multiindex_string3  se      ED
 \\II!!!$44V<f
 (5

/r$   c                    Tp. ROp\         P                  ! \        P                  P	                  ^4      P                  R4      VR7      pRVP                  n        \        WRV4       R# )ro   r5   	StringColN)ro   rp   r4   r-  r<  r   )	r;   r<   rQ   r  r  r  r6   r  r   rC  s   &&&   r"   test_write_column_index_string(TestBasic.test_write_column_index_stringD  sT      .\\II!!!$44V<f
 &

/r$   c                   . ROp\         P                  ! \        P                  P	                  ^4      P                  R4      VR7      pRVP                  n        VR8X  d   V P                  WA\        RV4       R# \        WBV4       R# )r8   r5   NonStringColr   r5  Nr8   r9   r:   r   rH  )r;   r<   rQ   r  r  r  r6   r  r   r6  r   r=  s   &&&  r"   !test_write_column_index_nonstring+TestBasic.test_write_column_index_nonstringR  so     \\II!!!$44V<f
 )

]"%%I'Ey RF3r$   c                   \         P                  ! R 4      pVR8X  d2   \         P                  P                  RR7      pVP	                  V4       \
        P                  ! R\
        P                  ! . ROR4      R\
        P                  ! . ROR4      R	\
        P                  ! . RO4      R
\
        P                  ! . RO4      R\
        P                  ! . ROR4      R\
        P                  ! . ROR4      R\
        P                  ! . ROR4      /4      pVP                  Wc4       \        W1R7      p\        W1RR7      pVR,          P                  \        P                  ! R4      8X  g   Q h\        P                  ! R\        P                  ! . RORR7      R\        P                  ! . RORR7      R	\        P                  ! . RORR7      R
\        P                  ! . RORR7      R\        P                  ! . RORR7      R\        P                  ! . RORR7      R\        P                  ! . RORR7      /4      p	VR8X  d'   VP                  R	^R7      pV	P                  R	^R7      p	\        P                   ! W4       R# ) pyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r@   Nint64rB   uint8rY   rC   rI   rJ   float32grF   r   numpy_nullable)r#   dtype_backendInt64rG   UInt8rW   booleanFloat32Float64)axisr8   r9   r:   N)r@   rB   rY   N)TFTNrM  )      ?rb   rc   N)r'   r   r.   r/   r-   r   tabler   write_tabler   rH   rQ   r;   r<   r!  r   r   )
r   r#   r!   r   pqr.   r`  result1result2r   s
   &&&&      r"   test_dtype_backendTestBasic.test_dtype_backendb  s     !23]" ;;$$G % D %W]]?G<W]]?G<W]]#89W]]#<=W]]<9W]]#8)DW]]#8)D

 	u(y8yGWXs|!!RXXi%8888<<RXXoW=RXXoW=RXX38DRXX7yIRXXl':RXX39ERXX39E

 ]" ll3Ql/G}}Sq}1H
g0r$   rH   c                "   \         P                  ! R \         P                  ! . VR7      /4      p\        P                  ! RR4       RpVR8X  d/   \         P                  ! R \         P                  ! . RR7      /4      p\        VVVRR/VR	7       R# )
valuerG   r   11.0.0Nr`   r\  rW  rV  r  )r;   r<   r   r'   r   r   )r   r*   rH   r   rT   r   s   &&&&  r"   test_read_empty_arrayTestBasic.test_read_empty_array  s      \\"E2

 	Ix0G||RXXb	:H
 	(*:;	
r$   c                   VR 8w  d   \         P                  ! V4       \        V! RRRR4      RR7      ;_uu_ 4       pVP                  VP	                  4       R7       \        VP                  VR7      pR	R	R	4       Tp\        '       d%   VP                  P                  \        4      Vn        \        P                  ! XV4       R	#   + '       g   i     L[; i)
r   iodataparquetzsimple.parquetrb)mode)contentr   N)r'   r   openserve_contentreadr   urlr   r6   rr   objectr   r   )r   
httpserverdatapathr>   r#   rJ   rT   r   s   &&&&&   r"   test_parquet_read_from_url$TestBasic.test_parquet_read_from_url  s     V'(44DEDQQUV$$QVVX$6jnnV<B R '//66v>H
b(+ RQs   8CC	r)   )Ngzipsnappybrotli)	rX  rY  rZ  rw  zdatetime64[ns, UTC]r`   z	period[D]r\  rW   )r   r   r   r   r   r   r'   r.   parametrizer   r   r   r  r	  r  r2  r8  r>  rD  rI  rN  re  rj  network
single_cpurz  r   r   r   s   @r"   r   r   }  s     	O0 [[],NO
 P


&3.0.$
L44"0"04 .1` [[
	


0 [[[[
,  
,r$   r   c                     a  ] tR tRt o R tR tR tR tR tR t	R t
]P                  P                  ]! 4       R	R
7      ]P                  P                  ]'       * RR
7      ]P                  P#                  R]]P(                  .4      R 4       4       4       tR t]P                  P.                  R 4       t]P                  P.                  R 4       t]P                  P.                  ]P                  P#                  RR.. .4      R 4       4       tR tR tR tR t]P                  P#                  R]R .RR.R7      R 4       tR t R t!R t"R  t#R! t$R" t%R# t&R$ t']P                  PQ                  R%4      R& 4       t)R' t*]P                  P#                  R(^ ^.]PV                  ! R)R*.]P                  P                  ],]-R+R,7      R-7      ]PV                  ! ].P\                  ! R.^^^ ^ 4      ].P\                  ! R.^^^^4      .]P                  P                  ]/R/R
7      R-7      .4      R0 4       t0R1 t1R2 t2R3 t3R4 t4R5 t5R6 t6R7 t7R8t8V t9R9# ):TestParquetPyArrowi  c                    Tp\         P                  ! R R4       \        P                  ! R^RR7      pVP	                  R4      pWTR&   . ROVR&   \        WCV4       R# )	r   ri  rK   Europe/BrusselsrM   tzNdatetime_tzbool_with_noneTNT)r'   r   r;   rS   r   r   )r   r*   ru   r   rT   dtis   &&&&  r"   
test_basicTestParquetPyArrow.test_basic  sW    Ix0 mmJ6GHnnT"=1+r$   c           	     |    Tp\         P                  ! R ^RR7      VR&   \        VVVVRR.,          RRR./R7       R# )	rK   r  r  r  rW   r]   r6   r   N)r;   rS   r   )r   r*   ru   r   rT   s   &&&& r"   test_basic_subset_columns,TestParquetPyArrow.test_basic_subset_columns  sL     MM*aDUV=5)*"Xu$56	
r$   c                &   VP                  VR 7      p\        V\        4      '       g   Q h\        V4      p\	        V4      pVP                  4       pRVP                  R&   VR,          P                  R4      VR&   \        P                  ! WV4       R# )r   Nri   zM8[us]r~   )
r   r   r[   r   r   r  r   rr   r   r   )r   r*   ru   	buf_bytes
buf_streamresr   s   &&&    r"   *test_to_bytes_without_path_or_buf_provided=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  s    &&b&1	)U++++Y'
:&<<>-1)*(01D(E(L(LX(V$%
c,r$   c                    \         P                  ! \        P                  ! ^4      P	                  ^^4      \        R4      R7      P                  4       pV P                  W1\        RV4       R# )   aaar5   zDuplicate column names foundN	r;   r<   rQ   rR   reshaperO   r  r   r   r   r*   r   rT   s   &&& r"   test_duplicate_columns)TestParquetPyArrow.test_duplicate_columns  sL    \\"))B-//15tE{KPPR!!J >		
r$   c                z    \         P                  ! R \         P                  ! R^R7      /4      p\        W2V4       R# )r@   1 dayrL   N)r;   r<   timedelta_ranger   r  s   &&& r"   test_timedelta!TestParquetPyArrow.test_timedelta  s,    \\3 2 27A FGH+r$   c                |    \         P                  ! R . RO/4      pV P                  W1\        P                  V4       R# )r@   Nr@   r8   rb   )r;   r<   r   r   ArrowExceptionr  s   &&& r"   test_unsupported#TestParquetPyArrow.test_unsupported  s/    \\3./ 	**273I3I9Ur$   c                    \         P                  ! ^^
\         P                  R7      p\        P                  ! VR.R7      p\
        '       d$   V P                  WA\        P                  V4       R# \        WBV4       R# )r9   rG   fp16rn  r6   N)
rQ   rR   float16r;   r<   r   r   r   r  r   )r   r*   r   rn  rT   s   &&&  r"   test_unsupported_float16+TestParquetPyArrow.test_unsupported_float16  sY     yyBbjj1\\tfX6....	 RB/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                   \         P                  ! ^^
\         P                  R7      p\        P                  ! VR.R7      pV! V4      p\
        P                  ! \        P                  4      ;_uu_ 4        VP                  WaR7       RRR4       \        P                  P                  V4      '       d   Q hR#   + '       g   i     L9; i)r9   rG   r  r  )r   r#   N)rQ   rR   r  r;   r<   r   r   r   r  r   osr   isfile)r   r*   r  r   rn  rT   r   s   &&&&   r"    test_unsupported_float16_cleanup3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yyBbjj1\\tfX6#%%g&<&<==MMtM/ >77>>$''''' >=s   5B99C		c                "   \         P                  ! R \         P                  ! \        R4      4      R\         P                  ! . RO\         P                  ! . R	O4      R7      R\         P                  ! . R
O. RORR7      /4      p\        W2V4       R# )r@   abcdefrB   NrG   rY   T)
categoriesordered)ro   r4   r4   ro   Nro   rn   )NrB   rY   NrY   rB   )rB   rY   rC   )r;   r<   CategoricalrO   CategoricalDtyper   r  s   &&& r"   test_categorical#TestParquetPyArrow.test_categorical#  sl    \\R^^DN3R^^=--.CD
 R^^4. 
" 	+r$   c           	         \         P                  ! R 4      pVP                  ! R/ VB pRV/p\        VVVVP                   R2VVR7       R# )s3fs
filesystem/pyarrow.parquetr   r   r   Nr)   )r'   r   S3FileSystemr   r  )	r   r>   s3_bucket_publics3sor*   r   r  s3kws	   &&&&&&   r"   test_s3_roundtrip_explicit_fs0TestParquetPyArrow.test_s3_roundtrip_explicit_fs8  sZ     ""6*&&B$))**:;	
r$   c           	     L    R V/p\        VVVRVP                   R2VVR7       R# )storage_optionss3://r  r  Nr   r  )r   r>   r  r  r*   r   s   &&&&&&r"   test_s3_roundtrip$TestParquetPyArrow.test_s3_roundtripH  s:     "4()..//?@	
r$   partition_colr2   c                R   \         P                  ! R 4       VP                  4       pV'       dO   VP                  \        P                  V\        P                  4      4      pRpWt,          P                  V4      Wt&   \        VVVVRVP                   R2RV/RVRRRV/R^R	7	       R# )
r  categoryr  z/parquet_dirr  r   ry   NT)r   r   r   r   r|   r   )
r'   r   r  rr   dictfromkeysrQ   int32r   r  )	r   r>   r  r*   r  r  r   expected_dfpartition_col_types	   &&&&&&&  r"   test_s3_roundtrip_for_dir,TestParquetPyArrow.test_s3_roundtrip_for_dirU  s    
 	F#nn& %,,T]]="((-STK!+)4)C)J)J"*K& 	 )../|<*D1 -t!4
 	
r$   c                   \         P                  ! R 4       \        4       pVP                  V4       \	        V4      pV'       d-   \
        '       g!   VP                  P                  R4      Vn        \        P                  ! W4       R# )r   r   N)
r'   r   r   r   r   r   r6   rr   r   r   )r   r>   r   bufferdf_from_bufs   &&&  r"   test_read_file_like_obj_support2TestParquetPyArrow.test_read_file_like_obj_supportw  s_    I&V$"6*&:&: ) 1 1 8 8 ?I
i5r$   c                   \         P                  ! R 4       VP                  RR4       VP                  RR4       \         P                  ! \        RR7      ;_uu_ 4        \        R4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     LP; i  + '       g   i     R# ; i)r   HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquetN)r'   r   setenvr   OSErrorr   r   )r   r>   monkeypatchs   &&&r"   test_expand_user#TestParquetPyArrow.test_expand_user  s    I&6=1=-8]]7*<==)* >]]7*<==  !12 >= >====s   B3C3C	C	c                    R R.pTpVP                  WRR7       \        W4       \        V4      P                  VP                  8X  g   Q hR# )rd   r]   Nr   ry   r   r   r   shape)r   r   r*   ru   r   rT   s   &&&&  r"   test_partition_cols_supported0TestParquetPyArrow.test_partition_cols_supported  sE     %
h4Ph7H%++rxx777r$   c                    R pV.pTpVP                  WRR7       \        W4       \        V4      P                  VP                  8X  g   Q hR# )rd   Nr  r  )r   r   r*   ru   r   partition_cols_listrT   s   &&&&   r"   test_partition_cols_string-TestParquetPyArrow.test_partition_cols_string  sJ    -.
h4Ph<H%++rxx777r$   c                    V # r   r)   )xs   &r"   <lambda>TestParquetPyArrow.<lambda>  s    Qr$   rW   zpathlib.Path)idsc                    R pV.pTpV! V4      pVP                  WR7       \        V4      P                  VP                  8X  g   Q hR# )r3   )r   N)r   r   r  )	r   r   r*   r>   r  r   r  rT   r   s	   &&&&&    r"   test_partition_cols_pathlib.TestParquetPyArrow.test_partition_cols_pathlib  sL     -."
d?D!''288333r$   c                N    \         P                  ! . . R 7      p\        W2V4       R# ))r   r6   Nr   r  s   &&& r"   test_empty_dataframe'TestParquetPyArrow.test_empty_dataframe  s    \\B/+r$   c                    ^ RI p\        P                  ! R^ ^./4      pVP                  ! VP                  ! RVP
                  ! 4       R7      .4      pVP                  \        4      p\        WBVRV/VR7       R# )r   Nr  typer   r"  )	r   r;   r<   r   fieldbool_rr   rd   r   )r   r*   r   r   rT   r   out_dfs   &&&    r"   test_write_with_schema)TestParquetPyArrow.test_write_with_schema  s`    \\3A-(s!I JK42Xv,>	
r$   c                   \         P                  ! R 4       \        P                  ! R\        P                  ! . RORR7      R\        P                  ! . RORR7      R\        P                  ! . RORR7      /4      pV'       d,   \
        '       d    \        WCWP                  RR	/4      R
7       M\        WCV4       \        P                  ! R\        P                  ! . RORR7      /4      p\        WCV4       R# )r   r@   rX  rG   rB   UInt32rY   NrW   r   r   r7   rk   r^  )r'   r   r;   r<   r   r   r   rr   )r   r*   r   r   rT   s   &&&& r"    test_additional_extension_arrays3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\RYYy8RYYy9RYY/x@
 "6"6RBC<9PQRB/\\3		/ IJK+r$   c           	        \         P                  ! R 4       \        P                  ! R\        P                  ! . R
ORR7      /4      p\        P
                  ! RV4      ;_uu_ 4        V'       dU   \        '       d   VP                  R4      pMVP                  RV R24      pVP                  P                  R4      Vn        MVP                  RV R24      p\        WTWR	7       RRR4       R#   + '       g   i     R# ; i)r   r@   Nstring[pyarrow]rG   string_storager   zstring[]r  rk   )
r'   r   r;   r<   r   r   r   rr   r6   r   )r   r*   r  r   r   rT   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RBB A@@@s   &C/;A*C//D 	c                V   \         P                  ! R 4       \        P                  ! R\        P                  P                  . RO4      R\        P                  ! R^RR7      R\        P                  P                  \        P                  ! R^RR7      4      /4      p\        W2V4       R# )	r   rY   rC   z
2012-01-01D)rM   r  rI   N))r   r8   )r8   r9   )r:   r   )
r'   r   r;   r<   IntervalIndexr  period_rangefrom_breaksrS   r   r  s   &&& r"   test_additional_extension_types2TestParquetPyArrow.test_additional_extension_types  s     	I&\\R%%112JKR__\13GR%%11MM,D		
 	+r$   c           	         R p\         P                  ! R\         P                  ! RR^
R7      /4      p\        WBVRV/R7       R# )z2.6r@   z
2017-01-011nsr  rM   versionr   N)r;   r<   rS   r   )r   r*   r   verrT   s   &&&  r"   test_timestamp_nanoseconds-TestParquetPyArrow.test_timestamp_nanoseconds  s;     \\3lPR STU)S9IJr$   c                   ^V.,          p\         P                  ! VRV/R7      pVR,          pVP                  \        P                  8w  d    ^ RIpVP                  P                  P                  V4      pVP                  VP                  4       ^<,          4      p	VP                  P                  V	4      Vn        VR,          P                  P                  V	4      VR&   \        WSVRVR7       R#   \         d     Li ; i)   index_as_colr   rn  :NNNNF)r}   r   )r;   r<   tzinfore   UTCpytzr   r  	utcoffsetFixedOffsettotal_seconds
tz_convertdtr   r   )
r   r*   rw   r   idxrT   r   r#  offsetr  s
   &&&&      r"   test_timezone_aware_index,TestParquetPyArrow.test_timezone_aware_index  s    +,,\\>3*?@ a5#**hll:V ../GH%%f&:&:&<r&AB!)!:!:2!>+3N+C+F+F+Q+QRT+U(Q  s   C3 3D Dc                    \         P                  ! R 4       \        P                  ! R\	        \        ^4      4      /4      pVP                  W!R7       \        W!R.R7      p\        V4      ^8X  g   Q hR# )r   r@   r   r   Nr@   r   r   )	r'   r   r;   r<   rO   rP   r   r   r  )r   r*   r   rT   r   s   &&&  r"   test_filter_row_groups)TestParquetPyArrow.test_filter_row_groups  sZ    I&\\3U1X/0
i+in5EF6{ar$   z2ignore:make_block is deprecated:DeprecationWarningc                N   ^ RI pTp\        P                  ! R^RRR7      pVP                  R4      pWeR&   . ROVR&   VP                  P                  V4      pVP                  \        P                  R7      pVR	,          P                  R
4      VR	&   \        VVVRR/VR7       R# )r   NrK   r  rf   )rM   r  rh   r  r  )types_mapperri   ztimestamp[us][pyarrow]rW  r   r#   r   r   r  )
r   r;   rS   r   Tablefrom_pandas	to_pandas
ArrowDtyperr   r   )	r   r*   ru   r   r   rT   r  pa_tabler   s	   &&&&     r"   &test_read_dtype_backend_pyarrow_config9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s     mmJ6GdSnnT"=1==,,R0%%2==%A(01D(E(L(L$)
$% 	()4	
r$   c                    \         P                  ! R ^^./\         P                  ! ^^.RR7      RR7      pVP                  4       pVP                  P                  R4      Vn        \        VVVRR/VR7       R# )	r@   testr  zint64[pyarrow])r   rH   rW  r   r4  N)r;   r<   r=   r  r   rr   r   )r   r*   r   rT   r   s   &&&  r"   ,test_read_dtype_backend_pyarrow_config_index?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index1  so    \\1a&M1a&v!>FV
 779!../?@()4	
r$   r6   rl   rm   z*https://github.com/apache/arrow/pull/44171)r   r   r     z/pa.pandas_compat passes 'datetime64' to .astypec                    \         P                  ! R \        R4      R\        \        ^^4      4      /4      pW$n        \        WCV4       R# )rW   rA   r]   Nr   )r   r*   r6   r   rT   s   &&&& r"   test_columns_dtypes_not_invalid2TestParquetPyArrow.test_columns_dtypes_not_invalid@  s9    2 \\8T%[%eAqk9JKL
+r$   c                |    \         P                  ! \         P                  ! . RORR7      R7      p\        W2V4       R# )r@   zcustom namer>  r#  N)r@   rB   rY   )r;   r<   r=   r   r  s   &&& r"   test_empty_columns%TestParquetPyArrow.test_empty_columns^  s%    \\} MN+r$   c                    \         P                  ! ^^./R7      pR^/Vn        VP                  WR7       \	        WR7      pVP                  VP                  8X  g   Q hR# )r8   rn  test_attributer   N)r;   r<   attrsr   r   )r   r   r*   rT   new_dfs   &&&  r"   test_df_attrs_persistence,TestParquetPyArrow.test_df_attrs_persistencec  sP    \\A3x($a(
i+i3||rxx'''r$   c           
     :   \         P                  ! R RR./R R.R7      pVP                  WR7       \         P                  ! RR4      ;_uu_ 4        \	        WR7      pRRR4       \         P
                  ! \        P                  R	7      p\         P                  ! R RR./T\         P                  ! R R.VR
7      \         P                  ! R .\        '       d   V'       g   \        MTR
7      R7      p\        P                  ! XV4       R#   + '       g   i     L; i)r@   r  yrB   )rn  r   r   future.infer_stringTNna_valuerG   )rn  rH   r   r6   )r;   r<   r   r   r   StringDtyperQ   rq   r=   r   rw  r   r   )r   r   r*   r   rT   r   rH   r   s   &&&&    r"   test_string_inference(TestParquetPyArrow.test_string_inferencej  s    \\c3Z0c
C
i+4d;;!)7F </<<Sz"((C:U3HH22;MFSX	

 	fh/ <;s   D

D	c           	        ^ RI p\        P                  ! R\        R4      ./RR7      pVP	                  WP                  RVP                  ^4      3.4      R7       \        V4      p\        '       d   \        P                  ! RR./RR7      pM$\        P                  ! R\        R4      ./R	R7      p\        P                  ! WE4       R# )
r   Nr@   z123.00r
  rG   )r   123rW   rw  )r   r;   r<   r   r   r   
decimal128r   r   r   r   )r   r   r*   rT   r   r   s   &&&   r"   test_roundtrip_decimal)TestParquetPyArrow.test_roundtrip_decimal~  s    \\3!2 34<MN
i		Cq9I3J2K(LMi(||S5'N(CH||S78+<*=$>hOH
f/r$   c                P   ^ RI p^ RIHp VP                  RVP	                  . ROVP                  4       4      /4      pVP                  WA4       \        P                  ! RR4      ;_uu_ 4        \        V4      pRRR4       \        P                  ! R. RO/\        P                  ! \        P                  R7      \        P                  ! R.\        P                  ! \        P                  R7      R7      R7      p\        P                   ! XV4       R#   + '       g   i     L; i)	r   Nr@   rQ  TrR  rG   )rn  rH   r6   )NrB   rY   )r   pyarrow.parquetro  r`  r   large_stringra  r;   r   r   r<   rT  rQ   rq   r=   r   r   )r   r   r*   rb  r`  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%	c                   \         P                  ! R R4      p\         P                  ! R4      pVP                  \        P                  ! R^^4      .VP	                  R4      R7      pVP                  V.R.R7      pVP                  WQ4       \        V4      p\        P                  ! R\        P                  ! R^^4      ./RR	7      p\        P                  ! Wg4       R
# )r   13.0.0rQ  i@  usr  	timestampr  zdatetime64[us])rn  rH   N)r'   r   r   re   rd  r`  ra  r   r;   r<   r   r   )r   r   r*   rb  arrr`  r   r   s   &&      r"   test_non_nanosecond_timestamps1TestParquetPyArrow.test_non_nanosecond_timestamps  s      H5  !23hh))$156R\\$=OhP#{m4
u(i(<< 1 1$1 =>?"
 	f/r$   c           	     (   \         P                  ! R R4      pVP                  ! RVP                  ! VP                  ! 4       VP
                  ! 4       4      3.4      p\        P                  ! RR^//RR^//.4      p\        VVVRV/RRR//R	7       R
# )r   rb  r4   r2   r3   r   to_pandas_kwargsmaps_as_pydictsr   )r   r   N)	r'   r   r   map_rW   rR  r;   r<   r   )r   r*   r   r   r   rT   s   &&&   r"   test_maps_as_pydicts'TestParquetPyArrow.test_maps_as_pydicts  s    %%i:W\\'.."2GMMODEF
 \\EC8,usAh.?@A"F++.?-JK	
r$   r)   N):r   r   r   r   r  r  r  r  r  r  r  r'   r.   r/   r   skipifr   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r0  filterwarningsr:  r?  r   r	   NotImplementedErrorre   r   rC  rF  rM  rU  rZ  r_  rf  rl  r   r   r   s   @r"   r  r    s    
,
-
,V
0 [[?   [[009NO[[[3*=>
( ? P
(,* [[
 
 [[

 

 [[[[_ubk:
 ; 
@6388 [[c;'h-G  	4	4,

,&C", KR:  [[ TU
 V
2
 [[FLL kk''(.G (  LL%%dAq!Q7%%dAq!Q7 kk''(L ( 		
0,10,,
(0(00<0
 
r$   r  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
]P                  P                  R	 4       tR
 tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )TestParquetFastParqueti  c                   \         P                  ! R 4      pVP                  R4      pTp\        P                  ! R^VR7      pVP                  R4      pWR&   \        P                  ! R^R7      VR&   \        WtV4       R# )	r#  z
US/EasternrK   r  Nr  r  rL   	timedelta)r'   r   timezoner;   rS   r   r  r   )	r   r0   ru   r!   r   r#  r  rT   r  s	   &&&&&    r"   r  !TestParquetFastParquet.test_basic  sm    ""6*]]<(mmJb9nnT"=,,Wa@;+r$   c                   \         P                  ! R \        R4      R\        \        ^^4      4      /4      p\        pRp^ ^.Vn        V P                  W1WEV4       RR.Vn        V P                  W1WEV4       \        P                  ! R^^^ ^ 4      \        P                  ! R^^^^4      .Vn        V P                  W1WEV4       R# )rW   rA   r]   r5  rl   rm   rA  N)r;   r<   rO   rP   r6  r6   r   re   )r   r0   r   rT   errr   s   &&&   r"   test_columns_dtypes_invalid2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\8T%[%eAqk9JKL, V
!!"#I> f%
!!"#I> dAq!Q/dAq!Q/

 	!!"#I>r$   c                    \         P                  ! \        P                  ! ^4      P	                  ^^4      \        R4      R7      P                  4       pRpV P                  W1\        WB4       R# )r  r  r5   z9Cannot create parquet dataset with duplicate column namesNr  r   r0   r   rT   r   s   &&&  r"   r  -TestParquetFastParquet.test_duplicate_columns  sK    \\"))B-//15tE{KPPRI!!"*cEr$   c                    \         P                  ! R . RO/4      p\         P                  ! R R\        P                  R./RR7      p\	        WCWRR7       R# )	r@   NFr_  g        r  rG   )r   r}   )TNF)r;   r<   rQ   rq   r   )r   r0   r!   r   rT   r   s   &&&&  r"   test_bool_with_none*TestParquetFastParquet.test_bool_with_none  sD    \\3 345<<sBFFC&8 9K 	5Qr$   c           	         \         P                  ! R \         P                  ! RR^R7      /4      pV P                  W1\        RV4       \         P                  ! R . RO/4      pRpV P                  W1\        WB4       R# )r@   2013Mr  Nz"Can't infer object conversion typer  )r;   r<   r  r   r   r|  s   &&&  r"   r  'TestParquetFastParquet.test_unsupported  sb    \\3S! LMN!!"*dIF \\3./2!!"*cEr$   c                    \         P                  ! R \         P                  ! \        R4      4      /4      p\	        W2V4       R# )r@   rA   N)r;   r<   r  rO   r   )r   r0   r   rT   s   &&& r"   r  'TestParquetFastParquet.test_categorical  s,    \\3tE{ ;<=+r$   c                    R \        \        ^4      4      /p\        P                  ! V4      pVP	                  W!R^R7       \        W!R.R7      p\        V4      ^8X  g   Q hR# )r@   N)r#   ry   row_group_offsetsr.  r/  )rO   rP   r;   r<   r   r   r  )r   r0   r   rC   rT   r   s   &&&   r"   r0  -TestParquetFastParquet.test_filter_row_groups  sU    $uQx.!\\!_
iPQRin5EF6{ar$   c                P    \        VVVR VP                   R2RV/RRRV/R7       R# )r  z/fastparquet.parquetr  ry   Nr  r  )r   r>   r  r  r0   r   s   &&&&&&r"   r  (TestParquetFastParquet.test_s3_roundtrip  s?     	)..//CD*D1'/@$G	
r$   c                   R R.pTpVP                  VRVRR7       \        P                  P                  V4      '       g   Q h^ RIpVP
                  ! \        V4      R4      P                  p\        V4      ^8X  g   Q hR# )rd   r]   r   Nr#   r   ry   F	r   r  r   existsr   ParquetFiler   catsr  r   r   r0   ru   r   rT   r   actual_partition_colss   &&&&    r"   r  4TestParquetFastParquet.test_partition_cols_supported  s|     %
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r$   c                    R pTpVP                  VRVRR7       \        P                  P                  V4      '       g   Q h^ RIpVP
                  ! \        V4      R4      P                  p\        V4      ^8X  g   Q hR# )rd   r   Nr  Fr  r  s   &&&&    r"   r  1TestParquetFastParquet.test_partition_cols_string)  sx    
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r$   c                   R R.pTpVP                  VRRVR7       \        P                  P                  V4      '       g   Q h^ RIpVP
                  ! \        V4      R4      P                  p\        V4      ^8X  g   Q hR# )rd   r]   r   N)r#   ry   partition_onFr  r  s   &&&&    r"   test_partition_on_supported2TestParquetFastParquet.test_partition_on_supported9  s|     %
 '	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r$   c           
         R R.pTpRp\         P                  ! \        VR7      ;_uu_ 4        VP                  VRRVVR7       RRR4       R#   + '       g   i     R# ; i)rd   r]   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   N)r#   ry   r  r   )r'   r   r   r   )r   r   r0   ru   r   rT   r   s   &&&&   r"   3test_error_on_using_partition_cols_and_partition_onJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onI  s^     !%  	 ]]:S11MM$ +-   2111s   AA	c                j    \         P                  ! 4       pVP                  4       p\        W2WR 7       R# )r  N)r;   r<   r  r   )r   r0   r   rT   r   s   &&&  r"   r  +TestParquetFastParquet.test_empty_dataframe\  s"    \\^779>r$   c                    ^V.,          p\         P                  ! VRV/R7      pVP                  4       pRVP                  n        \        WdWR7       R# )r  r  r   r   r  N)r;   r<   r  r   r  r   )r   r0   rw   r!   r   r)  rT   r   s   &&&&&   r"   r+  0TestParquetFastParquet.test_timezone_aware_indexb  sH     +,,\\>3*?@779%>r$   c                2   \         P                  ! V4      P                  R 4       \        P                  ! \
        4      ;_uu_ 4        \        VRR7       RRR4       \         P                  ! V4      P                  RR7       R#   + '       g   i     L8; i)s   breakitr   r   NF)
missing_ok)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_errorm  s^    Y++J7%%i00=9 1 	Y&&%&8 10s   BB	c                
   \         P                  ! R ^ ^.R^^ ./R7      p\        VR4      ;_uu_ 4       pVP                  V4       RRR4       \	        W!R7      p\
        P                  ! WS4       R#   + '       g   i     L4; i)r2   r3   rI  wbNr   )r;   r<   rs  r   r   r   r   )r   r#   r   rT   rJ   r   s   &&&   r"   test_bytes_file_name+TestParquetFastParquet.test_bytes_file_namet  sd    \\aVS1a&9:)T""aMM! # i7
f)	 #"s   A22B	c                    \         P                  ! R 4       \        P                  ! R^ ^.R^^ ./R7      p\         P                  ! \
        RR7      ;_uu_ 4        VP                  VR RR7       RRR4       \        P                  ! V4      P                  R	4       \         P                  ! \
        RR7      ;_uu_ 4        \        VR RR7       RRR4       R#   + '       g   i     Lr; i  + '       g   i     R# ; i)
r   r2   r3   rI  zfilesystem is not implementedr   r4   r#   r  Nrl   )r'   r   r;   r<   r   rp  r   r   r   r  r   r   r   rT   s   && r"   test_filesystem_notimplemented5TestParquetFastParquet.test_filesystem_notimplemented}  s    M*\\aVS1a&9:]].6UVVMM)MeML W 	Y++F3]].6UVV=UK WV	 WV WVV   C C,C)	,C=	c                    \         P                  ! R 4       \        P                  ! R^ ^.R^^ ./R7      p\         P                  ! \
        RR7      ;_uu_ 4        VP                  VR RR7       RRR4       \        P                  ! V4      P                  R	4       \         P                  ! \
        RR7      ;_uu_ 4        \        VR RR7       RRR4       R#   + '       g   i     Lr; i  + '       g   i     R# ; i)
r   r2   r3   rI  z1filesystem must be a pyarrow or fsspec FileSystemr   r4   r  Nrl   )r'   r   r;   r<   r   r   r   r   r   r  r   r  s   && r"   test_invalid_filesystem.TestParquetFastParquet.test_invalid_filesystem  s    I&\\aVS1a&9:]]Q
 
 MM)I%MH

 	Y++F3]]Q
 
 9G
 

 

 
 
r  c           	     D   \         P                  ! R 4      p\        P                  ! R^ ^.R^^ ./R7      p\         P                  ! \
        RR7      ;_uu_ 4        VP                  VRVP                  4       RR/R	7       R
R
R
4       \        P                  ! V4      P                  R4       \         P                  ! \
        RR7      ;_uu_ 4        \        VRVP                  4       RR/R	7       R
R
R
4       R
#   + '       g   i     L; i  + '       g   i     R
# ; i)z
pyarrow.fsr2   r3   rI  z8storage_options not supported with a pyarrow FileSystem.r   r   r4   ro   )r#   r  r  Nrl   )r'   r   r;   r<   r   rp  r   LocalFileSystemr   r   r  r   )r   r   pa_fsrT   s   &&  r"   .test_unsupported_pa_filesystem_storage_optionsETestParquetFastParquet.test_unsupported_pa_filesystem_storage_options  s    ##L1\\aVS1a&9:]]L
 
 MM  002!&	  	
 	Y++F3]]L
 
   002!&		
 

 

 
 
s   &C; D;D	D	c           	        R p\         P                  ! R\        \        ^^4      4      /4      pVP	                  V4       \
        P                  ! \        VR7      ;_uu_ 4        \        VRR7       RRR4       R#   + '       g   i     R# ; i)zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r]   r   numpy)rW  N)	r;   r<   rO   rP   r   r'   r   r   r   )r   r#   r   r   rT   s   &&&  r"   test_invalid_dtype_backend1TestParquetFastParquet.test_invalid_dtype_backend  sb    % 	 \\5$uQ{"345
i ]]:S11': 2111s   #A;;B	r)   N)r   r   r   r   r  ry  r  r  r  r  r0  r'   r.   r  r  r  r  r  r  r  r+  r  r  r  r  r  r  r   r   r   s   @r"   rr  rr    s     
,?*FR	F,  [[	
 	
/ / / &?	?9*LH6; ;r$   rr  )	NNNNNTFTr9   )H__doc__re   decimalr   rm  r   r  r   r  rQ   r'   pandas._configr   pandas.compatr   pandas.compat.pyarrowr   r   r   r	   pandasr;   pandas._testing_testingr   pandas.util.versionr
   pandas.io.parquetr   r   r   r   r   r   r&   r   r   r,   r.   ro  
pytestmarkfixturer   rn  r/   r#   r*   r0   r>   rU   ru   nowr"  ru  minmaxstrptimerw   r   r   r   r   r   r   r   r   r   r   r   r   r  rr  r)   r$   r"   <module>r     s)       	    - -    ' M KKST
KKG
 ""))9 #  !!&(;  " 
	
 	++$$!!*D % 	
010     T T  "  . hll+h//334h//334""#=?TU""#=?TU""#=?TU""#=?TU

BJ9 =///F((#V
2
2	E 	EG, G,T
~
 ~
Bq;T q;E%  M  s$   K+ !K; +	K87K8;	LL