
    jc                        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  SSKJr  SSK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%\" \$RL                  5      \" S5      :  r'\" \$RL                  5      \" S5      :  r(\
RR                  RU                  S5      \
RR                  RU                  S5      /r+\
RX                  " \
RZ                  " S\
RR                  R]                  \%(       + SS9\
RR                  R_                  \" 5       SSS9/S9\
RZ                  " S\
RR                  R]                  \"(       + SS9S9/S9S 5       r0\
RX                  S 5       r1\
RX                  S 5       r2\
RX                  S 5       r3\
RX                  S 5       r4\
RX                  S 5       r5\
RX                  " \R                  Rm                  \Rn                  5      \R                  Rm                  \Rp                  Rr                  5      \R                  Rm                  \Rp                  Rt                  5      \R                  Rw                  SS 5      \R                  Rw                  S!S 5      \R                  Rw                  S"S 5      \R                  Rw                  S#S 5      /S9S$ 5       r<         S8S% jr=S& r>S' r?S( r@S) rAS* rBS+ rCS, rDS- rE\
RR                  R_                  \" 5       =(       a    \"=(       a    \'(       + =(       a    \(S.S9S/ 5       rF " S0 S15      rG " S2 S3\G5      rH " S4 S5\G5      rI " S6 S7\G5      rJg! \# a    Sr" GNf = f! \# a
    Sr%Sr'Sr( GNf = f)9ztest parquet compat    N)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_parquetTFz	2025.12.0z2026.5.0z2ignore: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                     U R                   $ Nparamrequests    T/var/www/html/KUNJ/venv/lib/python3.13/site-packages/pandas/tests/io/test_parquet.pyenginer$   >   s    2 ==    c                  F    [         (       d  [        R                  " S5        g)Nr   r   )_HAVE_PYARROWpytestskip r%   r#   par+   Z   s    =./r%   c                     [         (       d  [        R                  " S5        [        5       (       a-  U R	                  [        R
                  R                  SSS95        g)Nr   r   Fr   r   )_HAVE_FASTPARQUETr(   r)   r   applymarkermarkxfailr!   s    r#   fpr1   a   sI    23KK%EeT	
 r%   c                  b    [         R                  " / SQSS.[         R                  " SS/5      S9$ )N         fooABr9   r:   columns)pd	DataFrameIndexr*   r%   r#   	df_compatr@   l   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abcr4            @      @float64dtypeTFT20130101r6   periods)abdef)r=   r>   listrangenparange
date_range)dfs    r#   df_cross_compatrX   q   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S9[         R                  " S5      [         R                  [         R                  " S5      /S.5      $ )NrB   rM   crM   NrZ   )   foo   bars   bazr7   barbazr4   rC   r6      u1rD   rE   rF   rG          @      @rI   rJ   nsrL   unit20130103)stringstring_with_nanstring_with_nonebytesunicodeintuintfloatfloat_with_nanbooldatetimedatetime_with_nat)r=   r>   rR   rT   nanrS   rU   astyperV   	TimestampNaTr*   r%   r#   df_fullry      s    <<5k #RVVS1 0-,a$IIaO**40YYsCy9"BFFC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                     U R                   $ r   r   r!   s    r#   timezone_aware_date_listr{      s     ==r%   c                 
  ^ ^^^^^^^	 [        U[        R                  5      (       d  [        S5      e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  UmU" U
5        gU" U
5        g)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           	         > [        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
                  " UTTTTS9  MQ     g )Nrj   r4   rj   )check_names
check_likecheck_dtype)rS   r   r   loctmassert_frame_equal)repeat_actualr   r   r   rW   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)rW   	temp_filer$   r   r   r   r   r   r   r   r   r   s   `  ```````  r#   check_round_tripr      s    F i..;<<8M4#8L#K!'X &H  |r%   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   [        XSS5        S S S 5        g ! , (       d  f       g = f)Nz.engine must be one of 'pyarrow', 'fastparquet'matchr7   r_   )r(   raisesr   r   )r@   r   msgs      r#   test_invalid_enginer      s-    
:C	z	-ue< 
.	-	-s	   3
Ac                     U(       a+  [         (       d   U R                  R                  S5      U l        [        R                  " SS5         [        X5        S S S 5        g ! , (       d  f       g = f)Nstrio.parquet.enginer   )r	   r<   rv   r=   option_contextr   )r@   r+   using_infer_stringr   s       r#   test_options_pyr     sI    "6"6%--44U;				.		:. 
;	:	:s   
A
A-c                 |    [         R                  " SS5         [        X5        S S S 5        g ! , (       d  f       g = f)Nr   r   r=   r   r   )r@   r1   r   s      r#   test_options_fpr     s)     
		.	>. 
?	>	>   -
;c                 |    [         R                  " SS5         [        X5        S S S 5        g ! , (       d  f       g = f)Nr   autor   )r@   r1   r+   r   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   )r   r   r   r   r=   r   )r1   r+   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   z6Unable 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   0  sq    1 i(Jm,J } 	W(()GJ,??  !  	[,,-
0CC  #>+>'>N&B/B+BN./
|;RSE{%86" 98 ME{%86" 9 /
|;VWE{%86" 98 J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UR                  X1S S9  [        X2S9n[        R                  " XT5        [        X2SS/S9n[        R                  " XTSS/   5        g N)r$   r}   r$   rM   rO   )r$   r<   r   r   r   r   rX   r+   r1   r   rW   results         r#   test_cross_engine_pa_fpr   [  sW     
BMM)DM9)/F&%)c
CF&c3Z.1r%   Afastparquet >= 2025.12.0, < 2026.5.0 can't write ArrowStringArrayc                     U nUR                  X2S S9  [        X1S9n[        R                  " XT5        [        X1SS/S9n[        R                  " XTSS/   5        g r   r   r   s         r#   test_cross_engine_fp_par   h  sW     
BMM)DM9)/F&%)c
CF&c3Z.1r%   c                        \ rS rSrS rS rSrg)Basei|  c                 v    [         R                  " X4S9   [        XUS S9  S S S 5        g ! , (       d  f       g = f)Nr   r}   )r(   r   r   )selfrW   r$   excerr_msgtemp_file_paths         r#   check_error_on_writeBase.check_error_on_write}  s&    ]]3.r6tD /..s   *
8c                 z    [         R                  " U5         [        XUS S9  S S S 5        g ! , (       d  f       g = f)Nr   )r   external_error_raisedr   )r   rW   r$   r   r   s        r#   check_external_error_on_write"Base.check_external_error_on_write  s(    %%c*r6tD +**s   ,
:r*   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r*   r%   r#   r   r   |  s    E
E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                  X1[        XB5        M     g )Nr3   r4   r7   rJ   z+to_parquet only supports IO with DataFrames)r=   Seriesrw   rT   arrayr   r   )r   r$   r   objr   s        r#   
test_errorTestBasic.test_error  sR    IIi LL$HHY
C @C%%c:sN
r%   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      nSS/Ul        [        X2U5        g )NrB   r4   rC   ri   rn   r7   r_   r=   r>   rR   rS   r<   r   )r   r$   r   rW   s       r#   test_columns_dtypesTestBasic.test_columns_dtypes  s;    \\T%[eAqk9JKL U^
/r%   r}   )Ngzipsnappybrotlic                 R    [         R                  " S/ SQ05      n[        XCUSU0S9  g )Nr9   r3   r}   r   r=   r>   r   )r   r$   r}   r   rW   s        r#   test_compressionTestBasic.test_compression  s)    \\3	*+60L	
r%   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      n[         R                  " S[        S5      05      n[	        UUUUSS/0S9  g )NrB   r4   rC   r   ri   r<   r   r   r=   r>   rR   rS   r   )r   r$   r   rW   r   s        r#   test_read_columnsTestBasic.test_read_columns  sY    \\T%[eAqk9JKL<<4; 78"XJ/	
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 )NrC   aabb)rn   partrn   r   r4   partition_colsr   )r   ==rM   )filtersr<   )r   r   r   r   r   )r   r$   tmp_pathrW   r   s        r#   test_read_filtersTestBasic.test_read_filters  sm    \\E!H~V
 <<A0*VH5%8$9ugN	
r%   c                    [         R                  " S5        [        R                  " S/ SQ05      n[	        X!S5        / SQ[        R
                  " SSSS9[        S	5      / S
Q/nU HT  nXBl        [        U[        R                  5      (       a   UR                  R                  S 5      Ul        [	        X!S5        MV     / SQUl        SUR                  l        [	        X!S5        g )Nr   r9   r3   )r5   r6   rC   rJ   r6   re   rf   rB   )r4   r6   rC   )r   r4   r5   r7   )r(   importorskipr=   r>   r   rV   rR   indexr   DatetimeIndex
_with_freqname)r   r   rW   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                     Un[         R                  " S/ SQ05      n[         R                  R                  / SQ5      nXTl        [        XBU5        g )Nr9   r3   )rM   r4   )rM   r5   )rN   r4   )r=   r>   
MultiIndexfrom_tuplesr  r   )r   r+   r   r$   rW   r  s         r#   test_write_multiindexTestBasic.test_write_multiindex  s>    \\3	*+))*HI/r%   c           
         Un[         R                  " S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Xg4 H+  nXl        [        XRU5        [        UUUSSS/0USS/   S9  M-     g )Nz01-Jan-2018z01-Dec-2018MSre   )freqrg   r5   r6   ABCr;   Level1Level2leveldater   r<   r9   r:   r   r   )r=   rV   r>   rT   randomdefault_rngstandard_normallenrR   r  from_productcopyr  r   )	r   r+   r   r$   datesrW   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                    [         R                  " / SQ/ SQS.5      nS SS.nUR                  SS9n[        X2XUS9  [         R                  " / SQ/ SQS./ S	QS
9n[        X2XUS9  / SQ/ SQ/n[         R                  " [	        [        S5      5      [        S5       Vs/ s H  ow* PM     snS.US
9nUR                  SS9n[        X2XUS9  g s  snf )Nr3   )qrs)rM   rN   F)r}   r  T)dropr   r   )zyxwvutsrr  r_   r_   r`   r`   r7   r7   quxr/  onetwor1  r2  r1  r2  r1  r2     )r1  r2  )r=   r>   reset_indexr   rR   rS   )r   r$   r   rW   r   r   arraysis           r#   test_write_ignoring_index#TestBasic.test_write_ignoring_index  s     \\	@A'+e< >>t>,6x	

 \\/2:O
 	6x	
 ED
 \\qNa+A1B+AB&
 >>t>,6x	
	 ,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                  XA[        SU5        g US:X  a  [        XBU5        g g )Nr
  r5   )rC   r6   r;   r   Column name must be a stringr   )r=   r  r  r>   rT   r  r  r  r   	TypeErrorr   )r   r$   r   
mi_columnsrW   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                     / 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                  XA[        S	U5        g US
:X  a  [        XBU5        g g )Nr.  )r4   r5   r4   r5   r4   r5   r4   r5   r5   r3  r3  r;   r  r  r   zColumn namer   )r=   r>   rT   r  r  r  r<   r   r   r   r   r   r$   r   r5  rW   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                     Un/ SQ/ SQ/n[         R                  " [        R                  R	                  S5      R                  S5      US9nSS/UR                  l        [        XRU5        g )Nr.  r0  r5   r@  r;   	ColLevel1	ColLevel2)	r=   r>   rT   r  r  r  r<   r   r   r   r+   r   r$   r5  rW   s         r#   #test_write_column_multiindex_string-TestBasic.test_write_column_multiindex_string>  se      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        [        XRU5        g )N)r_   r`   r7   r/  r5   r3  rC   r;   	StringCol)	r=   r>   rT   r  r  r  r<   r  r   rG  s         r#   test_write_column_index_string(TestBasic.test_write_column_index_stringO  sT      .\\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                  XA[        SU5        g [        XBU5        g )Nr4   r5   r6   rC   r5   rK  r;   NonStringColr   r:  )r=   r>   rT   r  r  r  r<   r  r   r;  r   rA  s        r#   !test_write_column_index_nonstring+TestBasic.test_write_column_index_nonstring]  so     \\II!!!$44V<f
 )

]"%%I'Ey RF3r%   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UR                  Xc5        [        X1S9n[        X1SS9nU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   UR                  SSS9nU	R                  SSS9n	[        R                   " X5        g )Npyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r4   r5   r6   Nint64uint8)rM   rN   rZ   N)TFTNrP  )      ?rc   rd   Nfloat32rF   )rM   rN   rZ   rO   rP   rQ   gr   numpy_nullable)r$   dtype_backendrM   Int64rG   UInt8ri   booleanFloat32Float64rZ   r4   )axis)r(   r  r/   r0   r.   r   tabler   write_tabler   rH   rT   r=   r>   r(  r   r   )
r   r$   r"   r   pqr/   rd  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

 	u(y8yGWX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
g0r%   rH   )	r^  r_  r`  objectzdatetime64[ns, UTC]rp   z	period[D]rb  ri   c                    [         R                  " S[         R                  " / US905      n[        R                  " SS5        S nUS:X  a+  [         R                  " S[         R                  " / SS905      n[        UUUSS0US	9  g )
NvaluerG   r   11.0.0rp   rb  r]  r\  r  )r=   r>   r   r(   r  r   )r   r+   rH   r   rW   r   s         r#   test_read_empty_arrayTestBasic.test_read_empty_array  s      \\"E2

 	Ix0G||RXXb	:H
 	(*:;	
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        Un[        (       a$  UR                  R                  [        5      Ul        [        R                  " WU5        g ! , (       d  f       NW= f)
Nr   iodataparquetzsimple.parquetrb)mode)contentr   )r(   r  openserve_contentreadr   urlr	   r<   rv   rk  r   r   )r   
httpserverdatapathr@   r$   rQ   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 '//66v>H
b(+ RQs   2B33
Cr*   N)r   r   r   r   r   r   r(   r/   parametrizer   r   r   r  r  r"  r7  r=  rB  rH  rM  rR  ri  ro  network
single_cpur~  r   r*   r%   r#   r   r     s    	O0 [[],NO
 P


&3.0.$
L44"0"04 .1` [[
	


0 [[[[
,  
,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'\R                  RQ                  S%5      S& 5       r)S' r*\R                  R#                  S(S)S*/\RV                  " S+S,/\R                  R                  \,\-S-S.9S/9\RV                  " \.R\                  " S0S*S*S)S)5      \.R\                  " S0S*S*S*S*5      /\R                  R                  \/S1S
9S/9/5      S2 5       r0S3 r1S4 r2S5 r3S6 r4S7 r5S8 r6S9 r7S:r8g;)<TestParquetPyArrowi  c                     Un[         R                  " SS5        [        R                  " SSSS9nUR	                  S 5      nXTS'   / SQUS	'   [        XCU5        g )
Nr   rn  rJ   r6   Europe/BrusselsrL   tzdatetime_tzTNTbool_with_none)r(   r  r=   rV   r  r   )r   r+   ry   r   rW   dtis         r#   
test_basicTestParquetPyArrow.test_basic  sW    Ix0 mmJ6GHnnT"=1+r%   c           	      f    Un[         R                  " SSSS9US'   [        UUUUSS/   SSS/0S	9  g )
NrJ   r6   r  r  r  ri   rn   r<   r   )r=   rV   r   )r   r+   ry   r   rW   s        r#   test_basic_subset_columns,TestParquetPyArrow.test_basic_subset_columns  sL     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'   US   R                  S5      US'   [        R                  " XV5        g )Nr   r   rt   zM8[us])
r   r   rl   r   r   r  r   rv   r   r   )r   r+   ry   	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                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nU R                  X1[        SU5        g )N   rC   r6   aaar;   zDuplicate column names found	r=   r>   rT   rU   reshaperR   r  r   r   r   r+   r   rW   s       r#   test_duplicate_columns)TestParquetPyArrow.test_duplicate_columns  sL    \\"))B-//15tE{KPPR!!J >		
r%   c                 r    [         R                  " S[         R                  " SSS905      n[        X2U5        g )NrM   1 dayr6   rK   )r=   r>   timedelta_ranger   r  s       r#   test_timedelta!TestParquetPyArrow.test_timedelta  s,    \\3 2 27A FGH+r%   c                 z    [         R                  " S/ SQ05      nU R                  X1[        R                  U5        g )NrM   rM   r4   rc   )r=   r>   r   r   ArrowExceptionr  s       r#   test_unsupported#TestParquetPyArrow.test_unsupported  s/    \\3./ 	**273I3I9Ur%   c                     [         R                  " SS[         R                  S9n[        R                  " US/S9n[
        (       a"  U R                  XA[        R                  U5        g [        XBU5        g )Nr5   
   rG   fp16rs  r<   )
rT   rU   float16r=   r>   r   r   r   r  r   )r   r+   r   rs  rW   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                 n   [         R                  " SS[         R                  S9n[        R                  " US/S9nU" U5      n[
        R                  " [        R                  5         UR                  XaS9  S S S 5        [        R                  R                  U5      (       a   eg ! , (       d  f       N5= f)Nr5   r  rG   r  r  )r   r$   )rT   rU   r  r=   r>   r   r   r   r  r   osr   isfile)r   r+   r  r   rs  rW   r   s          r#    test_unsupported_float16_cleanup3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yyBbjj1\\tfX6#%%g&<&<=MMtM/ >77>>$''''' >=s   'B&&
B4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[        X2U5        g )
Nabcdef)r_   r7   r7   r_   Nr_   r^   rG   )NrN   rZ   NrZ   rN   )rN   rZ   rO   T)
categoriesorderedrM   rN   rZ   )r=   r>   CategoricalrR   CategoricalDtyper   r  s       r#   test_categorical#TestParquetPyArrow.test_categorical.  sf    \\^^DN3^^=--.CD
 ^^4. 
" 	+r%   c           	          [         R                  " S5      nUR                  " S0 UD6nSU0n[        UUUUR                   S3UUS9  g )Ns3fs
filesystem/pyarrow.parquetr   r   r   r*   )r(   r  S3FileSystemr   r  )	r   r@   s3_bucket_publics3sor+   r   r  s3kws	            r#   test_s3_roundtrip_explicit_fs0TestParquetPyArrow.test_s3_roundtrip_explicit_fsC  sZ     ""6*&&B$))**:;	
r%   c           	      D    SU0n[        UUUSUR                   S3UUS9  g )Nstorage_optionss3://r  r  r   r  )r   r@   r  r  r+   r   s         r#   test_s3_roundtrip$TestParquetPyArrow.test_s3_roundtripS  s:     "4()..//?@	
r%   partition_colr9   c                 <   [         R                  " S5        UR                  5       nU(       aJ  UR                  [        R                  U[        R                  5      5      nSnXt   R                  U5      Xt'   [        U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  Tr4   )r   r   r   r   r   r   )
r(   r  r  rv   dictfromkeysrT   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_dir`  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(   r  r   r   r   r	   r<   rv   r   r   )r   r@   r   bufferdf_from_bufs        r#   test_read_file_like_obj_support2TestParquetPyArrow.test_read_file_like_obj_support  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(   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   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 )Nrr   rn   r   r}   r   r   r   shape)r   r   r+   ry   r   rW   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 )Nrr   r  r  )r   r   r+   ry   r   partition_cols_listrW   s          r#   test_partition_cols_string-TestParquetPyArrow.test_partition_cols_string  sJ    -.
h4Ph<H%++rxx777r%   c                     U $ r   r*   )xs    r#   <lambda>TestParquetPyArrow.<lambda>  s    Qr%   ri   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   r+   r@   r  r   r  rW   r   s	            r#   test_partition_cols_pathlib.TestParquetPyArrow.test_partition_cols_pathlib  sL     -."
d?D!''288333r%   c                 F    [         R                  " / / S9n[        X2U5        g )N)r  r<   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[        XBUSU0US9  g )Nr   r  r4   typer   r)  )	r   r=   r>   r   fieldbool_rv   rr   r   )r   r+   r   r   rW   r   out_dfs          r#   test_write_with_schema)TestParquetPyArrow.test_write_with_schema  s`    \\3A-(s!I JK42Xv,>	
r%   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  [        XCXR                  S	S
05      S9  O[        XCU5        [        R                  " S[        R                  " / SQSS905      n[        XCU5        g )Nr   r3   r^  rG   UInt32r[   ri   r  rZ   r   r   rM   rV  )r(   r  r=   r>   r   r	   r   rv   )r   r+   r   r   rW   s        r#    test_additional_extension_arrays3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\YYy8YYy9YY/x@
 "6"6RBC<9PQRB/\\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[        XTXS
9  S S S 5        g ! , (       d  f       g = f)Nr   rM   r[   string[pyarrow]rG   string_storager   zstring[]r	  )
r(   r  r=   r>   r   r   r	   rv   r<   r   )r   r+   r  r   r   rW   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   A:C
C,c                 D   [         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[        X2U5        g )	Nr   ))r   r4   )r4   r5   )r6   rC   z
2012-01-01r6   D)rL   r  rC   )rZ   rO   rP   )
r(   r  r=   r>   IntervalIndexr  period_rangefrom_breaksrV   r   r  s       r#   test_additional_extension_types2TestParquetPyArrow.test_additional_extension_types  sz     	I&\\%%112JK__\13G%%11MM,D		
 	+r%   c           	      z    Sn[         R                  " S[         R                  " SSSS905      n[        XBUSU0S9  g )	Nz2.6rM   z
2017-01-011nsr  r  rL   versionr   )r=   r>   rV   r   )r   r+   r   verrW   s        r#   test_timestamp_nanoseconds-TestParquetPyArrow.test_timestamp_nanoseconds  s;     \\3lPR STU)S9IJr%   c                 T    SU/-  n[         R                  " USU0S9n[        XSUSS9  g )N   index_as_colr  rs  F)r   r   )r   r+   r{   r   idxrW   s         r#   test_timezone_aware_index,TestParquetPyArrow.test_timezone_aware_index  s1    +,,\\>3*?@>r%   c                     [         R                  " S5        [        R                  " S[	        [        S5      5      05      nUR                  X!S9  [        X!S/S9n[        U5      S:X  d   eg )Nr   rM   r6   r   rM   r   r   r   r4   )	r(   r  r=   r>   rR   rS   r   r   r  )r   r+   r   rW   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                 2   SS K nUn[        R                  " SSSSS9nUR                  S 5      nXeS'   / SQUS	'   UR                  R                  U5      nUR                  [        R                  S
9nUS   R                  S5      US'   [        UUUSS0US9  g )Nr   rJ   r6   r  re   )rL   r  rg   r  r  r  )types_mapperrt   ztimestamp[us][pyarrow]r]  r   r$   r   r   )
r   r=   rV   r  Tablefrom_pandas	to_pandas
ArrowDtyperv   r   )	r   r+   ry   r   r   rW   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                     [         R                  " SSS/0[         R                  " SS/SS9SS	9nUR                  5       nUR                  R                  S5      Ul        [        UUUS
S0US9  g )NrM   r4   r5   r6   rC   testr  zint64[pyarrow])r  rH   r]  r   r.  )r=   r>   r?   r  r  rv   r   )r   r+   r   rW   r   s        r#   ,test_read_dtype_backend_pyarrow_config_index?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index$  so    \\1a&M1a&v!>FV
 779!../?@()4	
r%   r<   r   r4   r\   r]   z*https://github.com/apache/arrow/pull/44171)r   r   r     z/pa.pandas_compat passes 'datetime64' to .astypec           	          [         R                  " [        S5      [        [        SS5      5      S.5      nX$l        [        XCU5        g )NrB   r4   rC   r   r   )r   r+   r<   r   rW   s        r#   test_columns_dtypes_not_invalid2TestParquetPyArrow.test_columns_dtypes_not_invalid3  s5    2 \\T%[eAqk9JKL
+r%   c                 n    [         R                  " [         R                  " / SQSS9S9n[        X2U5        g )Nr  zcustom namer8  r-  )r=   r>   r?   r   r  s       r#   test_empty_columns%TestParquetPyArrow.test_empty_columnsQ  s%    \\} MN+r%   c                     [         R                  " SS/0S9nSS0Ul        UR                  XS9  [	        XS9nUR                  UR                  :X  d   eg )Nr4   rs  test_attributer   )r=   r>   attrsr   r   )r   r   r+   rW   new_dfs        r#   test_df_attrs_persistence,TestParquetPyArrow.test_df_attrs_persistenceV  sP    \\A3x($a(
i+i3||rxx'''r%   c           
         [         R                  " SSS/0SS/S9nUR                  XS9  [         R                  " SS5         [	        XS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)NrM   r  yrN   )rs  r  r   future.infer_stringTna_valuerG   )rs  rH   r  r<   )r=   r>   r   r   r   StringDtyperT   ru   r?   r	   rk  r   r   )r   r   r+   r   rW   r   rH   r   s           r#   test_string_inference(TestParquetPyArrow.test_string_inference]  s    \\c3Z0c
C
i+4d;!)7F </<<Sz"((C:U3HH22;MFSX	

 	fh/ <;s   
C**
C8c           	      z   SS K n[        R                  " S[        S5      /0SS9nUR	                  XR                  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                  " XE5        g )Nr   rM   z123.00r  rG   r!  )r   123ri   rk  )r   r=   r>   r   r   r   
decimal128r   r	   r   r   )r   r   r+   rW   r   r   s         r#   test_roundtrip_decimal)TestParquetPyArrow.test_roundtrip_decimalq  s    \\3!2 34<MN
i		Cq9I3J2K(LMi(||S5'N(CH||S78+<*=$>hOH
f/r%   c                 "   SS K nSS KJn  UR                  SUR	                  / SQUR                  5       5      05      nUR                  XA5        [        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   rM   )NrN   rZ   rK  TrL  rG   )rs  rH   r<   )r   pyarrow.parquetrt  rd  r   large_stringre  r=   r   r   r>   rN  rT   ru   r?   r   r   )r   r   r+   rf  rd  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                    [         R                  " SS5      n[         R                  " S5      nUR                  [        R                  " SSS5      /UR	                  S5      S9nUR                  U/S/S	9nUR                  XQ5        [        U5      n[        R                  " S[        R                  " SSS5      /0S
S9n[        R                  " Xg5        g )Nr   13.0.0rU  i@  r4   usr   	timestampr  zdatetime64[us])rs  rH   )r(   r  r   rs   r^  rd  re  r   r=   r>   r   r   )r   r   r+   rf  arrrd  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           	          [         R                  " SS5      nUR                  " SUR                  " UR                  " 5       UR
                  " 5       5      4/5      n[        R                  " SSS00SSS00/5      n[        UUUSU0S	S
S00S9  g )Nr   r\  r7   r9   r4   r:   r5   r   to_pandas_kwargsmaps_as_pydictsr   )r   r   )	r(   r  r   map_ri   rW  r=   r>   r   )r   r+   r   r   r   rW   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)9r   r   r   r   r  r  r  r  r  r  r  r(   r/   r0   r   skipifr   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r%  r*  filterwarningsr4  r9  r    r
   NotImplementedErrorrs   r   r=  r@  rG  rO  rT  rY  r`  rf  r   r*   r%   r#   r  r    s   
,
-
,V
0 [[?   [[009NO[[[3*=>
( ? P
(,* [[
 
 [[

 

 [[[[_ubk:
 ; 
@6388 [[c;'h-G  	4	4,

,&C", K?
  [[ 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                      \ rS rSrS rS rS rS rS r\	R                  R                  \" 5       =(       a    \=(       a    \(       + =(       a    \SS9S	 5       rS
 r\	R                  R$                  S 5       r\	R                  R                  \" 5       =(       a    \=(       a    \(       + =(       a    \SS9S 5       r\	R                  R                  \" 5       =(       a    \=(       a    \(       + =(       a    \SS9S 5       r\	R                  R                  \" 5       =(       a    \=(       a    \(       + =(       a    \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 g)TestParquetFastParqueti  c                     [         R                  " S5      nUR                  S5      nUn[        R                  " SSUS9nUR                  S 5      nXS'   [        R                  " SSS9US	'   [        XtU5        g )
Npytzz
US/EasternrJ   r6   r  r  r  rK   	timedelta)r(   r  timezoner=   rV   r  r  r   )	r   r1   ry   r"   r   rn  r  rW   r  s	            r#   r  !TestParquetFastParquet.test_basic  sm    ""6*]]<(mmJb9nnT"=,,Wa@;+r%   c           	         [         R                  " [        S5      [        [        SS5      5      S.5      n[        nSnSS/Ul        U R                  X1XEU5        SS/Ul        U R                  X1XEU5        [        R                  " S	SSSS5      [        R                  " S	SSSS5      /Ul        U R                  X1XEU5        g )
NrB   r4   rC   r   r:  r   r\   r]   r;  )r=   r>   rR   rS   r;  r<   r   rs   )r   r1   r   rW   errr   s         r#   test_columns_dtypes_invalid2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\T%[eAqk9JKL, V
!!"#I> f%
!!"#I> dAq!Q/dAq!Q/

 	!!"#I>r%   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nSnU R                  X1[        XB5        g )Nr  rC   r6   r  r;   z9Cannot create parquet dataset with duplicate column namesr  r   r1   r   rW   r   s        r#   r  -TestParquetFastParquet.test_duplicate_columns  sK    \\"))B-//15tE{KPPRI!!"*cEr%   c                     [         R                  " S/ SQ05      n[         R                  " SS[        R                  S/0SS9n[	        XCXSS9  g )	NrM   )TNFrY  g        r  rG   F)r   r   )r=   r>   rT   ru   r   )r   r1   r"   r   rW   r   s         r#   test_bool_with_none*TestParquetFastParquet.test_bool_with_none  sD    \\3 345<<sBFFC&8 9K 	5Qr%   c           	          [         R                  " S[         R                  " SSSS905      nU R                  X1[        S U5        [         R                  " S/ SQ05      nSnU R                  X1[        XB5        g )NrM   2013Mr6   r  r  z"Can't infer object conversion type)r=   r>   r  r   r   rw  s        r#   r  'TestParquetFastParquet.test_unsupported  sb    \\3S! LMN!!"*dIF \\3./2!!"*cEr%   r   r   c                     [         R                  " S[         R                  " [        S5      5      05      n[	        X2U5        g )NrM   rB   )r=   r>   r  rR   r   )r   r1   r   rW   s       r#   r  'TestParquetFastParquet.test_categorical  s.     \\3tE{ ;<=+r%   c                     S[        [        S5      5      0n[        R                  " U5      nUR	                  X!S SS9  [        X!S/S9n[        U5      S:X  d   eg )NrM   r6   r4   )r$   r}   row_group_offsetsr(  r)  )rR   rS   r=   r>   r   r   r  )r   r1   r   rO   rW   r   s         r#   r*  -TestParquetFastParquet.test_filter_row_groups   sU    $uQx.!\\!_
iPQRin5EF6{ar%   c           
      F    [        U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   r@   r  r  r1   r   s         r#   r  (TestParquetFastParquet.test_s3_roundtrip  s:     	)..//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 )Nrr   rn   r   r$   r   r}   r   Fr5   	r   r  r   existsr   ParquetFiler   catsr  r   r   r1   ry   r   rW   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 )Nrr   r   r  r   Fr4   r  r  s           r#   r  1TestParquetFastParquet.test_partition_cols_string*  sz      
 )	 	 	
 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 )Nrr   rn   r   )r$   r}   partition_onr   Fr5   r  r  s           r#   test_partition_on_supported2TestParquetFastParquet.test_partition_on_supportedA  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)Nrr   rn   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   r1   ry   r   rW   r   s          r#   3test_error_on_using_partition_cols_and_partition_onJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onX  sX     !%  	 ]]:S1MM$ +-   211s	   ?
Ac                 b    [         R                  " 5       nUR                  5       n[        X2XS9  g )Nr	  )r=   r>   r  r   )r   r1   r   rW   r   s        r#   r  +TestParquetFastParquet.test_empty_dataframek  s"    \\^779>r%   c                     SU/-  n[         R                  " USU0S9nUR                  5       nSUR                  l        [        XdXS9  g )Nr!  r"  r#  r  r	  )r=   r>   r  r  r  r   )r   r1   r{   r"   r   r$  rW   r   s           r#   r%  0TestParquetFastParquet.test_timezone_aware_indexq  sH     +,,\\>3*?@779%>r%   c                    [         R                  " U5      R                  S5        [        R                  " [
        5         [        USS9  S S S 5        [         R                  " U5      R                  SS9  g ! , (       d  f       N2= f)Ns   breakitr   r   F)
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_error|  s[    Y++J7%%i0=9 1 	Y&&%&8 10s    A77
Bc                     [         R                  " SS/SS/S.S9n[        US5       nUR                  U5        S S S 5        [	        X!S9n[
        R                  " XS5        g ! , (       d  f       N.= f)Nr   r4   r8   rC  wbr   )r=   r>   rx  r   r   r   r   )r   r$   r   rW   rQ   r   s         r#   test_bytes_file_name+TestParquetFastParquet.test_bytes_file_name  s]    \\aV1a&9:)T"aMM! # i7
f)	 #"s   A""
A0c                    [         R                  " S5        [        R                  " SS/SS/S.S9n[         R                  " [
        SS9   UR                  USSS	9  S S S 5        [        R                  " U5      R                  S
5        [         R                  " [
        SS9   [        USSS	9  S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   r   r4   r8   rC  zfilesystem is not implementedr   r7   r$   r  r\   )r(   r  r=   r>   r   rj  r   r   r   r  r   r   r   rW   s      r#   test_filesystem_notimplemented5TestParquetFastParquet.test_filesystem_notimplemented  s    M*\\aV1a&9:]].6UVMM)MeML W 	Y++F3]].6UV=UK WV	 WV WV   B8#C	8
C	
Cc                    [         R                  " S5        [        R                  " SS/SS/S.S9n[         R                  " [
        SS9   UR                  USSS	9  S S S 5        [        R                  " U5      R                  S
5        [         R                  " [
        SS9   [        USSS	9  S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   r   r4   r8   rC  z1filesystem must be a pyarrow or fsspec FileSystemr   r7   r  r\   )r(   r  r=   r>   r   r   r   r   r   r  r   r  s      r#   test_invalid_filesystem.TestParquetFastParquet.test_invalid_filesystem  s    I&\\aV1a&9:]]Q
 MM)I%MH

 	Y++F3]]Q
 9G
 

 

 
r  c                    [         R                  " S5      n[        R                  " SS/SS/S.S9n[         R                  " [
        SS9   UR                  USUR                  5       S	S
0S9  S S S 5        [        R                  " U5      R                  S5        [         R                  " [
        SS9   [        USUR                  5       S	S
0S9  S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)Nz
pyarrow.fsr   r4   r8   rC  z8storage_options not supported with a pyarrow FileSystem.r   r   r7   r_   )r$   r  r  r\   )r(   r  r=   r>   r   rj  r   LocalFileSystemr   r   r  r   )r   r   pa_fsrW   s       r#   .test_unsupported_pa_filesystem_storage_optionsETestParquetFastParquet.test_unsupported_pa_filesystem_storage_options  s    ##L1\\aV1a&9:]]L
 MM  002!&	  	
 	Y++F3]]L
   002!&		
 

 

 
s   #C4C+
C(+
C9c           	          Sn[         R                  " S[        [        SS5      5      05      nUR	                  U5        [
        R                  " [        US9   [        USS9  S S S 5        g ! , (       d  f       g = f)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rn   r4   rC   r   numpy)r]  )	r=   r>   rR   rS   r   r(   r   r   r   )r   r$   r   r   rW   s        r#   test_invalid_dtype_backend1TestParquetFastParquet.test_invalid_dtype_backend  s\    % 	 \\5$uQ{"345
i ]]:S1': 211s   A,,
A:r*   N)!r   r   r   r   r  rt  r  rz  r  r(   r/   r0   r   r'   _fp_version_lt_2025_fp_version_lt_2026_5r  r*  r  r  r  r  r  r  r  r%  r  r  r  r  r  r  r   r*   r%   r#   rl  rl    s   
,?*FR	F [[ 	"	"##	" "R  ,,  [[	
 	
 [[ 	"	"##	" "R  //  [[ 	"	"##	" "R  //  [[ 	"	"##	" "R  // &?	?9*LH6;r%   rl  )	NNNNNTFTr5   )K__doc__rs   decimalr   rr  r   r  r   r  rT   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   r  r  r/   ri  
pytestmarkfixturer    rh  r0   r$   r+   r1   r@   rX   ry   nowUTCrp  minmaxstrptimer{   r   r   r   r   r   r   r   r   r   r   r   r   r  rl  r*   r%   r#   <module>r     s       	    - -    ' M	"!+"9"9:W[=QQ#K$;$;<wz?RR 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   	N  
2
2	E 	EG, G,T
f
 f
RM;T M;k$  M  "!"s$   M !<M% M"!M"%M54M5