
    Owg'                        d Z ddlZddlmZ ddlmZ ddlZddlZddlZ	ddl
Z
ddlmZ ddlmZ ddlmZ ddlmZmZmZ ddlZddlmZ dd	lmZ dd
lmZmZmZm Z m!Z! 	 ddl"Z"dZ#	 ddl%Z%dZ&e
jN                  jQ                  d      e
jN                  jQ                  d      gZ) e
jT                   e
jV                  de
jN                  jY                  e& xs  edd      dk(  d             e
jV                  de
jN                  jY                  e# d            g      d        Z-e
jT                  d        Z.e
jT                  d        Z/e
jT                  d        Z0e
jT                  d        Z1e
jT                  d        Z2 e
jT                  ej                  jg                  ejh                  jj                        ej                  jg                  ejh                  jl                        ej                  jg                  ejh                  jn                        ej                  jq                  dd       ej                  jq                  d!d       ej                  jq                  d"d       ej                  jq                  d#d       g      d$        Z9	 	 	 	 	 	 	 	 	 d8d%Z:d& Z;d' Z<d( Z=d) Z>d* Z?d+ Z@d, ZAd- ZBd. ZCd/ ZD G d0 d1      ZE G d2 d3eE      ZF G d4 d5eE      ZG G d6 d7eE      ZHy# e$$ r dZ#Y w xY w# e$$ r dZ&Y w xY w)9z test parquet compat     N)Decimal)BytesIO)using_copy_on_write)_get_option)is_platform_windows)pa_version_under11p0pa_version_under13p0pa_version_under15p0)Version)FastParquetImplPyArrowImpl
get_engineread_parquet
to_parquetTFz2ignore:DataFrame._data is deprecated:FutureWarningz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningfastparquetmode.data_managersilentarrayz4fastparquet is not installed or ArrayManager is usedreason)markspyarrowpyarrow is not installed)paramsc                     | j                   S Nparamrequests    S/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/test_parquet.pyenginer#   ;   s    & ==    c                  :    t         st        j                  d       y)Nr   r   )_HAVE_PYARROWpytestskip r$   r"   par*   Q   s    ./r$   c                      t         st        j                  d       yt        dd      dk(  rt        j                  d       y)Nzfastparquet is not installedr   Tr   r   z.ArrayManager is not supported with fastparquetr   )_HAVE_FASTPARQUETr'   r(   r   r)   r$   r"   fpr-   X   s9    23  
(	6'	ADEr$   c                  6    t        j                  g ddd      S )N         fooAB)pd	DataFramer)   r$   r"   	df_compatr9   a   s    <<ie455r$   c            
          t        j                  t        d      t        t        dd            t	        j
                  ddd      g dt        j                  d	d
      d      } | S )Nabcr0            @      @float64dtypeTFT20130101r2   periods)abdef)r7   r8   listrangenparange
date_range)dfs    r"   df_cross_compatrQ   f   sR    	eeAqk"395$z15
	

B Ir$   c                     t        j                  t        d      dt        j                  dgg dg dg dt        t        dd            t        j                  d	d
      j                  d      t        j                  ddd      dt        j                  dgg dt        j                  dd	      t        j                  d      t         j                  t        j                  d      gd      S )Nr;   rF   crF   NrS   )   foo   bars   bazr3   barbazr0   r<   r2      u1r=   r>   r?   r@          @      @rB   rC   rD   20130103)stringstring_with_nanstring_with_nonebytesunicodeintuintfloatfloat_with_nanbooldatetimedatetime_with_nat)r7   r8   rK   rM   nanrL   rN   astyperO   	TimestampNaTr)   r$   r"   df_fullro   x   s    <<5k #RVVS1 0-,a$IIaO**40YYsCy9"BFFC0'j!<Z(Z("	
 r$   z2019-01-04T16:41:24+0200z%Y-%m-%dT%H:%M:%S%zz2019-01-04T16:41:24+0215z2019-01-04T16:41:24-0200z2019-01-04T16:41:24-0215c                     | j                   S r   r   r    s    r"   timezone_aware_date_listrq      s     ==r$   c
                      xs ddixs i  |r
|d<   |d<    fd}
&t        j                         5  |
|	       ddd       y |
|	       y# 1 sw Y   yxY w)a  Verify parquet serializer and deserializer produce the same results.

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

    Parameters
    ----------
    df: Dataframe
    engine: str, optional
        'pyarrow' or 'fastparquet'
    path: str, optional
    write_kwargs: dict of str:str, optional
    read_kwargs: dict of str:str, optional
    expected: DataFrame, optional
        Expected deserialization result, otherwise will be equal to `df`
    check_names: list of str, optional
        Closed set of column names to be compared
    check_like: bool, optional
        If True, ignore the order of index & columns.
    repeat: int, optional
        How many times to repeat the test
    compressionNr#   c                     t        |       D ]N  } j                  fi 
 t        fi 	}dv rd j                  d<   t	        j
                  |       P y )Nr`   r0   r`   )check_names
check_likecheck_dtype)rL   r   r   loctmassert_frame_equal)repeat_actualrx   rw   rv   rP   expectedpathread_kwargswrite_kwargss      r"   comparez!check_round_trip.<locals>.compare   sl    v 	ABMM$/,/!$6+6F H,5912!!'%'	r$   )rz   ensure_clean)rP   r#   r   r   r   r   rv   rw   rx   r|   r   s   ` ```````  r"   check_round_tripr      s    D  8M4#8L#K!'X &H  |__ 	$FO	 	 		 	s   		A$$A-c                     ddl m} |j                  | d      }|j                  j                  j                  |k(  sJ y)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                     d}t        j                  t        |      5  t        | dd       d d d        y # 1 sw Y   y xY w)Nz.engine must be one of 'pyarrow', 'fastparquet'matchr3   rX   )r'   raises
ValueErrorr   )r9   msgs     r"   test_invalid_enginer      s6    
:C	z	- 2E512 2 2s   5>c                 p    t        j                  dd      5  t        |        d d d        y # 1 sw Y   y xY w)Nio.parquet.enginer   r7   option_contextr   )r9   r*   s     r"   test_options_pyr      s2     
		.		: $#$ $ $   ,5c                 p    t        j                  dd      5  t        |        d d d        y # 1 sw Y   y xY w)Nr   r   r   )r9   r-   s     r"   test_options_fpr      s2     
		.	> $#$ $ $r   c                 p    t        j                  dd      5  t        |        d d d        y # 1 sw Y   y xY w)Nr   autor   )r9   r-   r*   s      r"   test_options_autor     s2     
		.	7 $#$ $ $r   c                 ^   t        t        d      t              sJ t        t        d      t              sJ t	        j
                  dd      5  t        t        d      t              sJ t        t        d      t              sJ t        t        d      t              sJ 	 d d d        t	        j
                  dd      5  t        t        d      t              sJ t        t        d      t              sJ t        t        d      t              sJ 	 d d d        t	        j
                  dd      5  t        t        d      t              sJ t        t        d      t              sJ t        t        d      t              sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   )
isinstancer   r   r   r7   r   )r-   r*   s     r"   test_options_get_enginer     sq   j+[999j/AAA			.		: F*V,k:::*Y/===*]3_EEEF
 
		.	> F*V,o>>>*Y/===*]3_EEEF
 
		.	7 F*V,k:::*Y/===*]3_EEEF FF F
F F
F Fs'   AF>AF/AF#FF #F,c                  D   ddl m}  | j                  d      }| j                  d      }t        sdn$t	        t
        j                        t	        |      k  }t        sdn$t	        t        j                        t	        |      k  }t        xr | }t        xr | }|s|s|r6d| d}t        j                  t        |      5  t        d	       d d d        n1d
}t        j                  t        |      5  t        d	       d d d        |r6d| d}t        j                  t        |      5  t        d	       d d d        y d}t        j                  t        |      5  t        d	       d d d        y y y # 1 sw Y   uxY w# 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   )VERSIONSr   r   FzPandas requires version .z. or newer of .pyarrow.r   r   z%Missing optional dependency .pyarrow.z. or newer of .fastparquet.z)Missing optional dependency .fastparquet.)pandas.compat._optionalr   getr&   r   r   __version__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+BN./
|;RSE{%8 #6"# # <E{%8 #6"# /
|;VWE{%8 #6"# # @E{%8 #6"# ## #1># ## #
# ## #s0    E22E>)F
F2E;>F
FFc                    | }t        j                         5 }|j                  ||d        t        ||      }t        j                  ||       t        ||ddg      }t        j                  ||ddg          d d d        y # 1 sw Y   y xY wN)r#   rs   r#   rF   rH   )r#   columnsrz   r   r   r   r{   rQ   r*   r-   rP   r   results         r"   test_cross_engine_pa_fpr   K  s     
B		 6d
d248d2.
fb)d2SzB
fb#sn56 6 6   A#BBc                    | }t        j                         5 }|j                  ||d        t        ||      }t        j                  ||       t        ||ddg      }t        j                  ||ddg          d d d        y # 1 sw Y   y xY wr   r   r   s         r"   test_cross_engine_fp_par   Y  s    	B		 6d
d248d2.
fb)d2SzB
fb#sn56 6 6r   c                    t        j                  dg di      }d}t        j                         5 }t        j                  t
        |dd      5  |j                  ||        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrF   r/   zqStarting with pandas version 3.0 all arguments of to_parquet except for the argument 'path' will be keyword-only.F)r   check_stacklevelraise_on_extra_warnings)r7   r8   rz   r   assert_produces_warningFutureWarningr   )r#   rP   r   r   s       r"   !test_parquet_pos_args_deprecationr   f  s    	sI&	'B	1  
	 (d''"$)	
 	( MM$'	(( (	( 	(( (s#   A>A2!A>2A;	7A>>Bc                       e Zd Zd Zd Zej                  j                  ej                  j                  d               Z	y)Basec                     t        j                         5 }t        j                  ||      5  t	        |||d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rs   )rz   r   r'   r   r   )selfrP   r#   excerr_msgr   s         r"   check_error_on_writezBase.check_error_on_writex  sY    __ 	?$s'2 ?2tV>?	? 	?? ?	? 	?s!   AAAA	AA#c                     t        j                         5 }t        j                  |      5  t        |||d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )rz   r   external_error_raisedr   )r   rP   r#   r   r   s        r"   check_external_error_on_writez"Base.check_external_error_on_write~  sY    __ 	?$))#. ?2tV>?	? 	?? ?	? 	?s!   AAAA	AA!c                 $   |dk7  rt        j                  |       t         |dddd      d      5 }|j                  |j	                                t        |j                        }d d d        t        j                  |       y # 1 sw Y    xY w)	Nr   iodataparquetzsimple.parquetrb)mode)content)	r'   importorskipopenserve_contentreadr   urlrz   r{   )r   
httpserverdatapathr9   r#   rJ   rP   s          r"   test_parquet_read_from_urlzBase.test_parquet_read_from_url  s     V'(44DEDQ 	.UV$$QVVX$6jnn-B	. 	b),	. 	.s   6BBN)
__name__
__module____qualname__r   r   r'   marknetwork
single_cpur   r)   r$   r"   r   r   w  s<    ?? [[[[-  -r$   r   c                       e Zd Zd Zd Zej                  j                  dg d      d        Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Zy)	TestBasicc                     t        j                  g d      ddt        j                  d      t        j                  g d      fD ]  }d}| j                  ||t        |        y )Nr/   r0   r3   rC   z+to_parquet only supports IO with DataFrames)r7   Seriesrm   rM   r   r   r   )r   r#   objr   s       r"   
test_errorzTestBasic.test_error  s[    IIi LL$HHY
 	DC @C%%c6:sC	Dr$   c           	          t        j                  t        d      t        t        dd            d      }ddg|_        t        ||       y )Nr;   r0   r<   r_   rd   r3   rX   )r7   r8   rK   rL   r   r   )r   r#   rP   s      r"   test_columns_dtypeszTestBasic.test_columns_dtypes  s;    \\T%[eAqk9JKL U^
V$r$   rs   )Ngzipsnappybrotlic                 V    t        j                  dg di      }t        ||d|i       y )Nr5   r/   rs   r   r7   r8   r   )r   r#   rs   rP   s       r"   test_compressionzTestBasic.test_compression  s&    \\3	*+V=+2NOr$   c           	          t        j                  t        d      t        t        dd            d      }t        j                  dt        d      i      }t	        |||ddgi       y )Nr;   r0   r<   r   r_   r   r   r   r7   r8   rK   rL   r   )r   r#   rP   r   s       r"   test_read_columnszTestBasic.test_read_columns  sS    \\T%[eAqk9JKL<<4; 78	H:7N	
r$   c           
          t        j                  t        t        d            t        d      d      }t        j                  dddgi      }t	        ||||ddgid	gdgd
d       y )Nr<   aabb)rd   partrd   r   r0   partition_colsr   )r   ==rF   )filtersr   )r   r   r   r   r|   r   )r   r#   tmp_pathrP   r   s        r"   test_read_filterszTestBasic.test_read_filters  sm    \\E!H~V
 <<A0*VH5%8$9ugN	
r$   c                    |dk7  }t        j                  dg di      }t        ||       g dt        j                  dd      t	        d      g d	g}|D ]Q  }||_        t        |t         j                        r |j
                  j                  d       |_        t        |||
       S g d|_        d|j
                  _	        t        ||       y )Nr   r5   r/   )r1   r2   r<   rC   r2   rD   r;   )r0   r2   r<   )rv   )r   r0   r1   r3   )
r7   r8   r   rO   rK   indexr   DatetimeIndex
_with_freqname)r   r#   rv   rP   indexesr   s         r"   test_write_indexzTestBasic.test_write_index  s    -\\3	*+V$ MM*a0K	
  	BEBH%!1!1288..t4R[A		B V$r$   c                     |}t        j                  dg di      }t         j                  j                  g d      }||_        t        ||       y )Nr5   r/   )rF   r0   )rF   r1   )rG   r0   )r7   r8   
MultiIndexfrom_tuplesr   r   )r   r*   r#   rP   r   s        r"   test_write_multiindexzTestBasic.test_write_multiindex  s@    \\3	*+))*HIV$r$   c           	         |}t        j                  ddd      }t        j                  t        j                  j                  d      j                  dt        |      z  df      t        d            }t         j                  j                  d	d
g|gddg      }|j                  d       }||fD ]-  }||_        t        ||       t        ||dddgi|ddg          / y )Nz01-Jan-2018z01-Dec-2018MS)freqr1   r2   ABCr   Level1Level2leveldate)r   r   r5   r6   r   r   )r7   rO   r8   rM   randomdefault_rngstandard_normallenrK   r  from_productcopyr   r   )r   r*   r#   datesrP   index1index2r   s           r"   test_multiindex_with_columnsz&TestBasic.test_multiindex_with_columns  s    m]F\\II!!!$44a#e*na5HIK
 ++!5)'61B , 
 4(f% 	EBHR(FS#J(?"cSVZ.		r$   c                    t        j                  g dg dd      }d dd}|j                  d      }t        ||||       t        j                  g dg ddg d	
      }t        ||||       g dg dg}t        j                  t	        t        d            t        d      D cg c]  }|  c}d|
      }|j                  d      }t        ||||       y c c}w )Nr/   )qrs)rF   rG   F)rs   r   T)dropr   r   )zyxwvutsrr   rX   rX   rY   rY   r3   r3   quxr)  onetwor+  r,  r+  r,  r+  r,     )r+  r,  )r7   r8   reset_indexr   rK   rL   )r   r#   rP   r   r   arraysis          r"   test_write_ignoring_indexz#TestBasic.test_write_ignoring_index  s     \\	@A'+e< >>t>,V,R \\/2:O
 	V,R ED
 \\qNa+A1QB+AB&
 >>t>,V,R	 ,Bs   )
C 
c                 ,   t         j                  j                  g d      }t        j                  t        j
                  j                  d      j                  d      |      }|dk(  r| j                  ||t        d       y |dk(  rt        ||       y y )Nr  r1   )r<   r2   r  r   Column name must be a stringr   )r7   r  r  r8   rM   r  r  r  r   	TypeErrorr   )r   r#   
mi_columnsrP   s       r"   test_write_column_multiindexz&TestBasic.test_write_column_multiindex  s    ]]../MN
\\II!!!$44V<j
 ]"%%FI'E y R( !r$   c                     g dg dg}t        j                  t        j                  j	                  d      j                  d      |      }ddg|j                  _        |dk(  r| j                  ||t        d	       y |d
k(  rt        ||       y y )Nr(  )r0   r1   r0   r1   r0   r1   r0   r1   r1   r-  r-  r  r  r  r   zColumn namer   )r7   r8   rM   r  r  r  r   r   r   r   r   r   r#   r/  rP   s       r"   &test_write_column_multiindex_nonstringz0TestBasic.test_write_column_multiindex_nonstring%  s    
 E$
 \\II!!!$44V<f
 %h/

]"%%b&*mLy R( !r$   c                     |}g dg dg}t        j                  t        j                  j	                  d      j                  d      |      }ddg|j                  _        t        ||       y )Nr(  r*  r1   r8  r  	ColLevel1	ColLevel2)	r7   r8   rM   r  r  r  r   r   r   r   r*   r#   r/  rP   s        r"   #test_write_column_multiindex_stringz-TestBasic.test_write_column_multiindex_string6  se      ED
 \\II!!!$44V<f
 (5

V$r$   c                     |}g d}t        j                  t        j                  j	                  d      j                  d      |      }d|j                  _        t        ||       y )N)rX   rY   r3   r)  r1   r-  r<   r  	StringCol)	r7   r8   rM   r  r  r  r   r  r   r>  s        r"   test_write_column_index_stringz(TestBasic.test_write_column_index_stringG  sT      .\\II!!!$44V<f
 &

V$r$   c                    g d}t        j                  t        j                  j	                  d      j                  d      |      }d|j                  _        |dk(  r| j                  ||t        d       y t        ||       y )Nr0   r1   r2   r<   r1   rA  r  NonStringColr   r3  )r7   r8   rM   r  r  r  r   r  r   r4  r   r9  s       r"   !test_write_column_index_nonstringz+TestBasic.test_write_column_index_nonstringU  so     \\II!!!$44V<f
 )

]"%%FI'E R(r$   c                    t        j                  d      }|dk(  r1t         j                  j                  d      }|j	                  |       t        j                  t        j                  g dd      t        j                  g dd      t        j                  g d      t        j                  g d	      t        j                  g d
d      t        j                  g dd      t        j                  g dd      d      }t        j                         5 }|j                  ||       t        ||      }t        ||d      }d d d        d   j                  t        j                  d      k(  sJ t        j                  t        j                  g dd      t        j                  g dd      t        j                  g dd      t        j                  g d	d      t        j                  g d
d      t        j                  g dd      t        j                  g dd      d      }	|dk(  r&j!                  dd      }|	j!                  dd      }	t        j"                  |	       y # 1 sw Y   1xY w)Nzpyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r0   r1   r2   Nint64uint8)rF   rG   rS   N)TFTNrE  )      ?r\   r]   Nfloat32r?   )rF   rG   rS   rH   rI   rJ   gr   numpy_nullabler#   dtype_backendrF   Int64r@   UInt8r_   booleanFloat32Float64rS   r0   )axis)r'   r   r   xfailapplymarkerr   tabler   rz   r   write_tabler   rA   rM   r7   r8   r"  r{   )
r   r#   r!   pqr   rZ  r   result1result2r   s
             r"   test_dtype_backendzTestBasic.test_dtype_backende  s     !23]" ;;$$G % D %]]?G<]]?G<]]#89]]#<=]]<9]]#8)D]]#8)D

 __ 	X$NN5$'"47G"4FVWG		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
gx0/	X 	Xs   .I22I<rA   )	rR  rS  rT  objectzdatetime64[ns, UTC]rf   z	period[D]rV  r_   c                     t        j                  dt        j                  g |      i      }d }|dk(  r,t        j                  dt        j                  g d      i      }t        ||ddi|       y )Nvaluer@   rf   rV  rQ  rO  r  )r7   r8   r   r   )r   r*   rA   rP   r   s        r"   test_read_empty_arrayzTestBasic.test_read_empty_array  sr      \\"E2
 G||RXXb	:H
 	2B Ch	
r$   N)r   r   r   r   r   r'   r   parametrizer   r   r   r  r	  r  r1  r6  r:  r?  rC  rG  r_  rc  r)   r$   r"   r   r     s    	D% [[],NOP PP

&%0%&S@))"%"%) /1b [[
	


r$   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                   e       d	      e
j                  j                  e d
	      e
j                  j!                  deej&                  g      d                      Zd Ze
j                  j,                  d        Ze
j                  j,                  d        Ze
j                  j,                  e
j                  j!                  ddgg g      d               Zd Zd Zd Zd Ze
j                  j!                  ded gddg      d        Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-e
j                  j                  e.d+	      d,        Z/d- Z0y.)/TestParquetPyArrowc                     |}t        j                  ddd      }|j                  d       }||d<   g d|d<   t        ||       y )NrC   r2   Europe/BrusselsrE   tzdatetime_tzTNTbool_with_none)r7   rO   r  r   )r   r*   ro   rP   dtis        r"   
test_basiczTestParquetPyArrow.test_basic  sI     mmJ6GHnnT"=1R r$   c                 n    |}t        j                  ddd      |d<   t        |||ddg   dddgi	       y )
NrC   r2   rh  ri  rk  r_   rd   r   r   )r7   rO   r   )r   r*   ro   rP   s       r"   test_basic_subset_columnsz,TestParquetPyArrow.test_basic_subset_columns  sI     MM*aDUV=5)*"Xu$56		
r$   c                     |j                  |      }t        |t              sJ t        |      }t	        |      }|j                         }d |j                  d<   t        j                  ||       y )Nr   ru   )	r   r   rb   r   r   r  ry   rz   r{   )r   r*   ro   	buf_bytes
buf_streamresr   s          r"   *test_to_bytes_without_path_or_buf_providedz=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  sc    &&b&1	)U+++Y'
:&<<>-1)*
c8,r$   c                     t        j                  t        j                  d      j	                  dd      t        d            j                         }| j                  ||t        d       y )N   r<   r2   aaar  zDuplicate column names found	r7   r8   rM   rN   reshaperK   r  r   r   r   r*   rP   s      r"   test_duplicate_columnsz)TestParquetPyArrow.test_duplicate_columns  sI    \\"))B-//15tE{KPPR!!"b*6TUr$   c                 t    t        j                  dt        j                  dd      i      }t        ||       y )NrF   1 dayr2   rD   )r7   r8   timedelta_ranger   r|  s      r"   test_timedeltaz!TestParquetPyArrow.test_timedelta  s,    \\3 2 27A FGHR r$   c                 x    t        j                  dg di      }| j                  ||t        j                         y )NrF   rF   r0   r\   )r7   r8   r   r   ArrowExceptionr|  s      r"   test_unsupportedz#TestParquetPyArrow.test_unsupported  s/    \\3./ 	**2r73I3IJr$   c                     t        j                  ddt         j                        }t        j                  |dg      }t
        r"| j                  ||t        j                         y t        ||       y )Nr1   
   r@   fp16r   r   )
rM   rN   float16r7   r8   r
   r   r   r  r   )r   r*   r   rP   s       r"   test_unsupported_float16z+TestParquetPyArrow.test_unsupported_float16  sQ     yyBbjj1\\tfX6..r2w7M7MNR$r$   zqPyArrow does not cleanup of partial files dumps when unsupported dtypes are passed to_parquet function in windowsr   zfloat16 works on 15	path_typec                    t        j                  ddt         j                        }t        j                  |dg      }t        j                         5 } ||      }t        j                  t        j                        5  |j                  ||       d d d        t        j                  j                  |      rJ 	 d d d        y # 1 sw Y   4xY w# 1 sw Y   y xY w)Nr1   r  r@   r  r  )r   r#   )rM   rN   r  r7   r8   rz   r   r   r   r  r   osr   isfile)r   r*   r  r   rP   path_strr   s          r"    test_unsupported_float16_cleanupz3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yyBbjj1\\tfX6__ 	,(X&D))'*@*@A 4434ww~~d++++		, 	,4 4	, 	,s$   ,C?C)CC	CCc                 &   t        j                         }t        j                  t        d            |d<   t        j                  g dt        j                  g d            |d<   t        j                  g dg dd	
      |d<   t        ||       y )NabcdefrF   )rX   r3   r3   rX   NrX   rW   r@   rG   )rF   rG   rS   rF   rS   rG   )rG   rS   rH   T)
categoriesorderedrS   )r7   r8   CategoricalrK   CategoricalDtyper   r|  s      r"   test_categoricalz#TestParquetPyArrow.test_categorical  sq    \\^..h03 ..5%%&;<
3 ..*PT
3 	R r$   c                     t        j                  d      } |j                  di |}d|i}t        |||j                   d||       y )Ns3fs
filesystem/pyarrow.parquetr   r   r   r)   )r'   r   S3FileSystemr   r  )r   r9   s3_public_bucketr*   s3sor  s3kws           r"   test_s3_roundtrip_explicit_fsz0TestParquetPyArrow.test_s3_roundtrip_explicit_fs   sW    ""6*T&&B$))**:;	
r$   c                 H    d|i}t        ||d|j                   d||       y )Nstorage_optionss3://r  r  r   r  )r   r9   r  r*   r  s        r"   test_s3_roundtripz$TestParquetPyArrow.test_s3_roundtrip-  s7     "4()..//?@	
r$   partition_colr5   c                 8   t        j                  d       |j                         }|rL|j                  t        j                  |t        j                              }d}||   j                  |      ||<   t        |||d|j                   dd|i|d |ddd	       y )
Nr  categoryr  z/parquet_dirr  )r   rs   r  Tr0   )r   r   r   r   rw   r|   )
r'   r   r  rl   dictfromkeysrM   int32r   r  )r   r9   r  r*   r  r  expected_dfpartition_col_types           r"   test_s3_roundtrip_for_dirz,TestParquetPyArrow.test_s3_roundtrip_for_dir9  s     	F#nn& %,,T]]="((-STK!+)4])C)J)J"*K& 	 )../|<*D1"/##'
 	
r$   c                     t        j                  d       t               }|j                  |       t	        |      }t        j                  ||       y )Nr   )r'   r   r   r   r   rz   r{   )r   r9   bufferdf_from_bufs       r"   test_read_file_like_obj_supportz2TestParquetPyArrow.test_read_file_like_obj_support`  s?    I&V$"6*
i5r$   c                 n   t        j                  d       |j                  dd       |j                  dd       t        j                  t        d      5  t        d       d d d        t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr   HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)r'   r   setenvr   OSErrorr   r   )r   r9   monkeypatchs      r"   test_expand_userz#TestParquetPyArrow.test_expand_userg  s    I&6=1=-8]]7*<= 	+)*	+]]7*<= 	3  !12	3 	3	+ 	+	3 	3s   BB+B(+B4c                     ddg}|}|j                  ||d        t        ||       t        |      j                  |j                  k(  sJ y )Nrh   rd   r   rs   r   r   r   shape)r   r   r*   ro   r   rP   s         r"   test_partition_cols_supportedz0TestParquetPyArrow.test_partition_cols_supportedp  sI     %
h~4Ph7H%++rxx777r$   c                     d}|g}|}|j                  ||d        t        ||       t        |      j                  |j                  k(  sJ y )Nrh   r  r  )r   r   r*   ro   r   partition_cols_listrP   s          r"   test_partition_cols_stringz-TestParquetPyArrow.test_partition_cols_stringx  sO    -.
h~4Ph(;<H%++rxx777r$   c                     | S r   r)   )xs    r"   <lambda>zTestParquetPyArrow.<lambda>  s    Q r$   r_   zpathlib.Path)idsc                     d}|g}|} ||      }|j                  ||       t        |      j                  |j                  k(  sJ y )Nr6   )r   )r   r   r  )	r   r   r*   r9   r  r   r  rP   r   s	            r"   test_partition_cols_pathlibz.TestParquetPyArrow.test_partition_cols_pathlib  sO     -."
d+>?D!''288333r$   c                 J    t        j                  g g       }t        ||       y )N)r   r   r   r|  s      r"   test_empty_dataframez'TestParquetPyArrow.test_empty_dataframe  s    \\B/R r$   c                     dd l }t        j                  dddgi      } |j                   |j                  d |j
                               g      }|j                  t              }t        ||d|i|       y )Nr   r  r0   )typer   r#  )	r   r7   r8   r   fieldbool_rl   rh   r   )r   r*   r   rP   r   out_dfs         r"   test_write_with_schemaz)TestParquetPyArrow.test_write_with_schema  sc    \\3A-(s!I JK4Rx.@6Rr$   c                 v   t        j                  d       t        j                  t        j                  g dd      t        j                  g dd      t        j                  g dd      d      }t        ||       t        j                  d	t        j                  g d
d      i      }t        ||       y )Nr   r/   rR  r@   UInt32rT   r_   rF   rG   rS   rF   rI  )r'   r   r7   r8   r   r   r|  s      r"    test_additional_extension_arraysz3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\YYy8YYy9YY/x@
 	R \\3		/ IJKR r$   c           
      "   t        j                  d       t        j                  dt        j                  g dd      i      }t        j
                  d|      5  t        |||j                  d| d      	       d d d        y # 1 sw Y   y xY w)
Nr   rF   rT   string[pyarrow]r@   string_storagezstring[]r   )r'   r   r7   r8   r   r   r   rl   )r   r*   r  rP   s       r"    test_pyarrow_backed_string_arrayz3TestParquetPyArrow.test_pyarrow_backed_string_array  sz    I&\\3		*:BS TUV/@ 	VRbii'.AQQR8S.TU	V 	V 	Vs   "BBc                 H   t        j                  d       t        j                  t        j                  j                  g d      t        j                  ddd      t        j                  j                  t        j                  ddd            d      }t        ||       y )	Nr   ))r   r0   )r0   r1   )r2   r<   z
2012-01-01r2   D)rE   r  r<   )rS   rH   rI   )
r'   r   r7   r8   IntervalIndexr  period_rangefrom_breaksrO   r   r|  s      r"   test_additional_extension_typesz2TestParquetPyArrow.test_additional_extension_types  sz     	I&\\%%112JK__\13G%%11MM,D		
 	R r$   c                     d}t        j                  dt        j                  ddd      i      }t        ||d|i       y )	Nz2.6rF   z
2017-01-011nsr  r  rE   versionr   )r7   r8   rO   r   )r   r*   verrP   s       r"   test_timestamp_nanosecondsz-TestParquetPyArrow.test_timestamp_nanoseconds  s;     \\3lPR STURy#.>?r$   c                 
   |j                   t        j                  j                  k7  r/|j	                  t
        j                  j                  d             d|gz  }t        j                  |d|i      }t        ||d       y )Nzitemporary skip this test until it is properly resolved: https://github.com/pandas-dev/pandas/issues/37286r      index_as_colr   r   F)rx   )tzinfori   timezoneutcrY  r'   r   rX  r7   r8   r   )r   r!   r*   rq   idxrP   s         r"   test_timezone_aware_indexz,TestParquetPyArrow.test_timezone_aware_index  sz    #**h.?.?.C.CC!!H "  +,,\\>3*?@ 	RU3r$   c                 6   t        j                  d       t        j                  dt	        t        d            i      }t        j                         5 }|j                  ||       t        ||dg      }d d d        t              dk(  sJ y # 1 sw Y   xY w)Nr   rF   r2   r   rF   r   r   r   r0   )r'   r   r7   r8   rK   rL   rz   r   r   r   r  )r   r*   rP   r   r   s        r"   test_filter_row_groupsz)TestParquetPyArrow.test_filter_row_groups  s    I&\\3U1X/0__ 	F$MM$rM*!$^4DEF	F 6{a	F 	Fs   #BBc                    t        j                  t        j                  j	                  d      j                  d      g d      }t        j                         5 }|j                  ||       t        ||      }d d d        |r;t        j                  t         j                  j                  j                        sJ y t        j                  t         j                  j                  j                        sJ y # 1 sw Y   xY w)Nr1   )r  r2   )r5   r6   Cr  r   )r7   r8   rM   r  r  r  rz   r   r   r   r   _mgrcore	internalsArrayManagerBlockManager)r   r*   using_array_managerrP   r   r   s         r"   test_read_parquet_managerz,TestParquetPyArrow.test_read_parquet_manager  s    \\II!!!$44W=
 __ 	,$MM$rM*!$+F	, fkk277+<+<+I+IJJJfkk277+<+<+I+IJJJ	, 	,s    C::Dc                    dd l }|}t        j                  ddd      }|j                  d       }||d<   g d|d<   |j                  j                  |      }|j                  t        j                  	      }t        rj|d
   j                  d      |d
<   |d   j                  d      |d<   |d   j                  t        j                   |j                  dd                  |d<   t        ||ddi|       y )Nr   rC   r2   rh  ri  rk  rl  rm  )types_mapperri   ztimestamp[us][pyarrow]rj   us)unitrj  rQ  r   r#   r   r   )r   r7   rO   r  Tablefrom_pandas	to_pandas
ArrowDtyper	   rl   	timestampr   )r   r*   ro   r   rP   rn  pa_tabler   s           r"   &test_read_dtype_backend_pyarrow_configz9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s     mmJ6GHnnT"=1==,,R0%%2==%A#+J#7#>#>?W#XHZ ,45H,I,P,P(-H() '/}&=&D&D/g//T>OPQ'H]# 	()4		
r$   c                 6   t        j                  dddgit        j                  ddgd      d	      }|j                         }d
d l}t        |j                        t        d      kD  r |j                  j                  d      |_        t        ||ddi|       y )NrF   r0   r1   r2   r<   testr  zint64[pyarrow])r   rA   r   z11.0.0rQ  r   r  )
r7   r8   Indexr  r   r   r   r   rl   r   )r   r*   rP   r   r   s        r"   ,test_read_dtype_backend_pyarrow_config_indexz?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index  s    \\1a&M1a&v!>FV
 7797&&''(*;;%^^223CDHN()4		
r$   c           	         t        j                  t        d      t        t        dd            d      }ddg|_        t        ||       ddg|_        t        j                  t        d	      5  t        ||       d d d        t        j                  d
dddd      t        j                  d
dddd      g|_        t        ||       y # 1 sw Y   MxY w)Nr;   r0   r<   r   r   rU   rV   z|S3r     )
r7   r8   rK   rL   r   r   r'   r   NotImplementedErrorri   r|  s      r"   test_columns_dtypes_not_invalidz2TestParquetPyArrow.test_columns_dtypes_not_invalid&  s    \\T%[eAqk9JKL V
R  f%
]].e< 	%R$	% dAq!Q/dAq!Q/

 	R 	% 	%s   .CCc                 v    t        j                  t        j                  g dd            }t        ||       y )Nr  custom namer  r'  r7   r8   r  r   r|  s      r"   test_empty_columnsz%TestParquetPyArrow.test_empty_columns:  s%    \\} MNR r$   c                     |dz  }t        j                  ddgi      }ddi|_        |j                  ||       t	        ||      }|j                  |j                  k(  sJ y )Nztest_df_metadata.pr0   r   test_attributer   )r7   r8   attrsr   r   )r   r   r*   r   rP   new_dfs         r"   test_df_attrs_persistencez,TestParquetPyArrow.test_df_attrs_persistence?  s_    ..\\A3x($a(
d2&d2.||rxx'''r$   c                 p   |dz  }t        j                  dddgiddg      }|j                  |d       t        j                  d	d
      5  t	        |d      }d d d        t        j                  dddgidt        j
                  ddgd            }t        j                  |       y # 1 sw Y   SxY w)Nztest_string_inference.prF   r  yrG   )r   r   r   r   future.infer_stringTstring[pyarrow_numpy]r@   )r   rA   r   )r7   r8   r   r   r   r  rz   r{   r   r   r*   r   rP   r   r   s          r"   test_string_inferencez(TestParquetPyArrow.test_string_inferenceG  s    33\\c3Z0c
C
d9-4d; 	:!$y9F	:<<Sz")((C:-DE

 	fh/	: 	:s   B,,B5znot supported before 11.0c           	      :   dd l }|dz  }t        j                  dt        d      gid      }|j	                  ||j                  d|j                  d      fg             t        |      }t        j                  dd	gid
      }t        j                  ||       y )Nr   z	decimal.prF   z123.00r  r@   r  )r   123zstring[python])
r   r7   r8   r   r   r   
decimal128r   rz   r{   r#  s          r"   test_roundtrip_decimalz)TestParquetPyArrow.test_roundtrip_decimalU  s     	+%\\3!2 34<MN
d299sBMM!4D.E-F#GHd#<<ug6FG
fh/r$   c                    dd l }dd lm} |dz  }|j                  d|j	                  g d|j                               i      }|j                  ||       t        j                  dd      5  t        |      }d d d        t        j                  dg didt        j                  dgd      	      }t        j                  |       y # 1 sw Y   RxY w)
Nr   zlarge_string.prF   )NrG   rS   r!  Tr"  r@   )r   rA   r   )r   pyarrow.parquetr   rZ  r   large_stringr[  r7   r   r   r8   r  rz   r{   )r   r   r*   r\  r   rZ  r   r   s           r"   #test_infer_string_large_string_typez6TestParquetPyArrow.test_infer_string_large_string_typea  s    $**#rxx(8"//:KLMN
ud#4d; 	(!$'F	(<<'()HHcU*AB

 	fh/	( 	(s   +CCN)1r   r   r   ro  rq  rv  r}  r  r  r  r'   r   rX  r   skipifr
   rd  strpathlibPathr  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r   r(  r,  r)   r$   r"   rf  rf    s   	!

-V
!K% [[?   [[009NO[[[3*=>, ? P,!$ [[

 

 [[	
 	
 [[[[E	

 
>6388 [[c;'h-G  	4	4!
S! V! @4, K
<
 !(!
(0 [[,5PQ	0 R	00r$   rf  c                   B   e Zd Zd Zd Zd Zej                  j                   e	e
j                         e	d      k\  d      d        Zd Zd	 Zd
 Zej                  j                   d        Zd Zd Zd Zd Zej                  j-                   e       d      d        Zej                  j                  exr  e	ej                         e	d      kD  d      d        Zd Zd Zd Zd Zd Z d Z!d Z"ej                  j-                   e       d      d        Z#y)TestParquetFastParquetc                     |}t        j                  ddd      }|j                  d       }||d<   t        j                  dd      |d<   t	        ||       y )	NrC   r2   z
US/Easternri  rk  r  rD   	timedelta)r7   rO   r  r  r   )r   r-   ro   rP   rn  s        r"   ro  z!TestParquetFastParquet.test_basic  sQ    mmJlCnnT"=,,Wa@;R r$   c           	         t        j                  t        d      t        t        dd            d      }t        }d}ddg|_        | j                  ||||       ddg|_        | j                  ||||       t        j                  d	dddd      t        j                  d	dddd      g|_        | j                  ||||       y )
Nr;   r0   r<   r   r3  r   rU   rV   r  )r7   r8   rK   rL   r4  r   r   ri   )r   r-   rP   errr   s        r"   test_columns_dtypes_invalidz2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\T%[eAqk9JKL, V
!!"b#s3 f%
!!"b#s3 dAq!Q/dAq!Q/

 	!!"b#s3r$   c                     t        j                  t        j                  d      j	                  dd      t        d            j                         }d}| j                  ||t        |       y )Nrx  r<   r2   ry  r  z9Cannot create parquet dataset with duplicate column namesrz  r   r-   rP   r   s       r"   r}  z-TestParquetFastParquet.test_duplicate_columns  sM    \\"))B-//15tE{KPPRI!!"b*c:r$   z2.0.0z$fastparquet uses np.float_ in numpy2r   c                     t        j                  dg di      }t        j                  ddt        j                  dgid      }t	        |||d       y )	NrF   )TNFrL  g        r  r@   F)r   rx   )r7   r8   rM   rk   r   r   r-   rP   r   s       r"   test_bool_with_nonez*TestParquetFastParquet.test_bool_with_none  sH    
 \\3 345<<sBFFC&8 9K 	R(Fr$   c                     t        j                  dt        j                  ddd      i      }| j                  ||t        d        t        j                  dg di      }d}| j                  ||t        |       y )NrF   2013Mr2   r  r  z"Can't infer object conversion type)r7   r8   r  r   r   r9  s       r"   r  z'TestParquetFastParquet.test_unsupported  sd    \\3S! LMN!!"b*d; \\3./2!!"b*c:r$   c                     t        j                  dt        j                  t        d            i      }t	        ||       y )NrF   r;   )r7   r8   r  rK   r   )r   r-   rP   s      r"   r  z'TestParquetFastParquet.test_categorical  s,    \\3tE{ ;<=R r$   c                    dt        t        d            i}t        j                  |      }t	        j
                         5 }|j                  ||d d       t        ||dg      }d d d        t              dk(  sJ y # 1 sw Y   xY w)NrF   r2   r0   )r#   rs   row_group_offsetsr  r  )	rK   rL   r7   r8   rz   r   r   r   r  )r   r-   rH   rP   r   r   s         r"   r  z-TestParquetFastParquet.test_filter_row_groups  s    $uQx.!\\!___ 	F$MM$rtqMQ!$^4DEF	F 6{a	F 	Fs    %A>>Bc           	      J    t        ||d|j                   dd|id |d       y )Nr  z/fastparquet.parquetr  )rs   r  r  r  )r   r9   r  r-   r  s        r"   r  z(TestParquetFastParquet.test_s3_roundtrip  s7     	)..//CD*D1)-$G	
r$   c                     ddg}|}|j                  |d|d        t        j                  j                  |      sJ dd l} |j
                  t        |      d      j                  }t        |      dk(  sJ y )Nrh   rd   r   r#   r   rs   r   Fr1   	r   r  r   existsr   ParquetFiler.  catsr  r   r   r-   ro   r   rP   r   actual_partition_colss           r"   r  z4TestParquetFastParquet.test_partition_cols_supported  s{     %
 )	 	 	
 ww~~h''' 7 7 7Hu M R R()Q...r$   c                     d}|}|j                  |d|d        t        j                  j                  |      sJ dd l} |j
                  t        |      d      j                  }t        |      dk(  sJ y )Nrh   r   rE  r   Fr0   rF  rJ  s           r"   r  z1TestParquetFastParquet.test_partition_cols_string  sw    
 )	 	 	
 ww~~h''' 7 7 7Hu M R R()Q...r$   c                     ddg}|}|j                  |dd |       t        j                  j                  |      sJ dd l} |j
                  t        |      d      j                  }t        |      dk(  sJ y )Nrh   rd   r   )r#   rs   partition_onr   Fr1   rF  rJ  s           r"   test_partition_on_supportedz2TestParquetFastParquet.test_partition_on_supported  s{     %
 '	 	 	
 ww~~h''' 7 7 7Hu M R R()Q...r$   c                     ddg}|}d}t        j                  t        |      5  |j                  |dd ||       d d d        y # 1 sw Y   y xY w)Nrh   rd   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r#   rs   rN  r   )r'   r   r   r   )r   r   r-   ro   r   rP   r   s          r"   3test_error_on_using_partition_cols_and_partition_onzJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_on  sa     !%  	 ]]:S1 	MM$ +-  	 	 	s   AAzfastparquet writes into Indexc                 h    t        j                         }|j                         }t        |||       y )Nr  )r7   r8   r  r   r;  s       r"   r  z+TestParquetFastParquet.test_empty_dataframe  s&     \\^779R(3r$   z2022.12zCfastparquet bug, see https://github.com/dask/fastparquet/issues/929c                     d|gz  }t        j                  |d|i      }|j                         }d|j                  _        t        |||       y )Nr  r  r  r   r  )r7   r8   r  r   r  r   )r   r-   rq   r  rP   r   s         r"   r  z0TestParquetFastParquet.test_timezone_aware_index  sJ    
 +,,\\>3*?@779%R(3r$   c                    t        j                  dddgi      }t        j                         5 }|j	                  |       t        j                  t        d      5  t        j                  t              5  t        |dd       d d d        d d d        t        j                  t        d      5  t        |dd	
       d d d        d d d        y # 1 sw Y   LxY w# 1 sw Y   PxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrF   r0   r1   z!not supported for the fastparquetr   r   T)r#   use_nullable_dtypesr   rP  )r7   r8   rz   r   r   r'   r   r   r   r   r   )r   r-   rP   r   s       r"   &test_use_nullable_dtypes_not_supportedz=TestParquetFastParquet.test_use_nullable_dtypes_not_supported*  s    \\3A-(__ 	R$MM$z1TU W//> W mQUVWW z1TU RT-yQR	R 	RW WW WR R	R 	RsS   -C3C5CC#C3/C'>C3CCC$	 C3'C0	,C33C<c                 d   t        j                  d      5 }t        j                  |      j	                  d       t        j                  t        d      5  t        |d       d d d        t        j                  |      j                  d       d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)	Ntest.parquets   breakit r   r   r   F)
missing_ok)
rz   r   r/  r0  write_bytesr'   r   	Exceptionr   unlink)r   r   s     r"   $test_close_file_handle_on_read_errorz;TestParquetFastParquet.test_close_file_handle_on_read_error5  s    __^, 	8LL**:6y3 9T-89 LL%%%7	8 	89 9	8 	8s$   A B&B$-B&B#	B&&B/c                 X   t        j                  ddgddgd      }t        j                  d      5 }t	        |j                         d      5 }|j                  |       d d d        t        ||      }d d d        t        j                  |       y # 1 sw Y   5xY w# 1 sw Y   ,xY w)Nr   r0   r4   r  rX  wbr   )	r7   r8   rz   r   r   encoder   r   r{   )r   r#   rP   r   rJ   r   s         r"   test_bytes_file_namez+TestParquetFastParquet.test_bytes_file_name=  s    \\aV1a&9:__^, 	7dkkmT* !aa ! "$v6F		7
 	fb)	! !	7 	7s#   B B B B	B  B)c                 X   t        j                  d       t        j                  ddgddgd      }t	        j
                         5 }t        j                  t        d      5  |j                  |dd	       d d d        d d d        t	        j
                         5 }t        j                  |      j                  d
       t        j                  t        d      5  t        |dd	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   r   r0   r4   r  zfilesystem is not implementedr   r3   r#   r  rU   )r'   r   r7   r8   rz   r   r   r  r   r/  r0  r[  r   r   rP   r   s      r"   test_filesystem_notimplementedz5TestParquetFastParquet.test_filesystem_notimplementedG  s   M*\\aV1a&9:__ 	L$#+J L d=UKL	L __ 	K$LL**62#+J K T-EJK	K 	KL L	L 	LK K	K 	KI   D#C<8DA D D+D <D	DDD	D  D)c                 X   t        j                  d       t        j                  ddgddgd      }t	        j
                         5 }t        j                  t        d      5  |j                  |dd	       d d d        d d d        t	        j
                         5 }t        j                  |      j                  d
       t        j                  t        d      5  t        |dd	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   r   r0   r4   r  z1filesystem must be a pyarrow or fsspec FileSystemr   r3   rd  rU   )r'   r   r7   r8   rz   r   r   r   r   r/  r0  r[  r   re  s      r"   test_invalid_filesystemz.TestParquetFastParquet.test_invalid_filesystemW  s   I&\\aV1a&9:__ 	H$"U H d9GH	H __ 	G$LL**62"U G T)FG	G 	GH H	H 	HG G	G 	Grg  c           	         t        j                  d      }t        j                  ddgddgd      }t	        j
                         5 }t        j                  t        d      5  |j                  |d|j                         d	d
i       d d d        d d d        t	        j
                         5 }t        j                  |      j                  d       t        j                  t        d      5  t        |d|j                         d	d
i       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nz
pyarrow.fsr   r0   r4   r  z8storage_options not supported with a pyarrow FileSystem.r   r   r3   rX   )r#   r  r  rU   )r'   r   r7   r8   rz   r   r   r  r   LocalFileSystemr/  r0  r[  r   )r   pa_fsrP   r   s       r"   .test_unsupported_pa_filesystem_storage_optionszETestParquetFastParquet.test_unsupported_pa_filesystem_storage_optionsg  s*   ##L1\\aV1a&9:__ 
	$#P 	 $$446%*EN	  		
	 __ 	$LL**62#P 	 $$446%*EN				 		 	
	 
		 		 	sI   D*#&D	D*-A E- D6ED'	#D**D36D?	;EEc           	      L   d}t        j                  dt        t        dd            i      }t	        j
                  d      5 }|j                  |       t        j                  t        |      5  t        |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rd   r0   r<   ztmp.parquetr   numpy)rQ  )r7   r8   rK   rL   rz   r   r   r'   r   r   r   )r   r#   r   rP   r   s        r"   test_invalid_dtype_backendz1TestParquetFastParquet.test_invalid_dtype_backend  s    % 	 \\5$uQ{"345__]+ 	:tMM$z5 :T9:	: 	:: :	: 	:s$   -B/B=BB	BB#c                     t        j                  t        j                  g dd            }t        j                  t        j                  g dd            }t        |||       y )Nr  r  r  r'  r  r  r;  s       r"   r  z)TestParquetFastParquet.test_empty_columns  sB     \\} MN<<bhh]&STR(3r$   N)$r   r   r   ro  r7  r}  r'   r   rX  r   rM   r   r<  r  r  r  r   r  r  r  rO  rQ  r-  r   r  r,   r   r  rV  r^  rb  rf  ri  rm  rp  r  r)   r$   r"   r2  r2    s_   !4*; [[77#335  G	G	;!  [[
 
/ / / & [[+-6UV4 W4 [[Sgk&=&=>ASST  4	4	R8*K G 8	: [[+-6UV4 W4r$   r2  )	NNNNNTFTr1   )I__doc__ri   decimalr   r   r   r  r/  ro  rM   r'   pandas._configr   pandas._config.configr   pandas.compatr   pandas.compat.pyarrowr   r	   r
   pandasr7   pandas._testing_testingrz   pandas.util.versionr   pandas.io.parquetr   r   r   r   r   r   r&   r   r   r,   r   filterwarnings
pytestmarkfixturer   r-  r#   r*   r-   r9   rQ   ro   nowr  r  minmaxstrptimerq   r   r   r   r   r   r   r   r   r   r   r   r   r   rf  r2  r)   r$   r"   <module>r     sE       	    . - -    ' M KKST
KKG
 ++$$%% L24@GKM % 	
 	++$$!!*D % 	
$%$     6 6  "  . h//334h//334h//334""#=?TU""#=?TU""#=?TU""#=?TU

 	?D9 2$$$F((#V6
6("- -0f
 f
R	z0 z0RR4T R4y"  M  s$   K' %K5 'K21K25L ?L 