
    .i#                        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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
jL                  jO                  d      e
jL                  jO                  d      gZ( e
jR                   e
jT                  de
jL                  jW                  e% d      e
jL                  jY                   e       dd      g       e
jT                  de
jL                  jW                  e" d            g      d        Z-e
jR                  d        Z.e
jR                  d        Z/e
jR                  d        Z0e
jR                  d        Z1e
jR                  d        Z2 e
jR                  ej                  jg                  ejh                        ej                  jg                  ejj                  jl                        ej                  jg                  ejj                  jn                        ej                  jq                  dd      ej                  jq                  dd      ej                  jq                  d d      ej                  jq                  d!d      g      d"        Z9	 	 	 	 	 	 	 	 	 d5d#Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@d* ZAd+ ZBd, ZC G d- d.      ZD G d/ d0eD      ZE G d1 d2eD      ZF G d3 d4eD      ZGy# e#$ r dZ"Y w xY w# e#$ r dZ%Y w xY w)6z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_parquetTFz2ignore:DataFrame._data is deprecated:FutureWarningz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningfastparquetfastparquet is not installedreasonTODO(infer_string) fastparquetr   strictmarkspyarrowpyarrow is not installed)paramsc                     | j                   S Nparamrequests    Z/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/io/test_parquet.pyenginer$   :   s    2 ==    c                  :    t         st        j                  d       y)Nr   r   )_HAVE_PYARROWpytestskip r%   r#   par+   V   s    ./r%   c                     t         st        j                  d       t               r0| j	                  t        j
                  j                  dd             y)Nr   r   Fr   r   )_HAVE_FASTPARQUETr(   r)   r   applymarkermarkxfailr!   s    r#   fpr1   ]   sC    23KK%EeT	
 r%   c                  d    t        j                  g dddt        j                  ddg            S )N         fooABr9   r:   columns)pd	DataFrameIndexr*   r%   r#   	df_compatr@   h   s%    <<ie4bhhSz>RSSr%   c            
          t        j                  t        d      t        t        dd            t	        j
                  ddd      g dt        j                  d	d
      d      } | S )Nabcr4            @      @float64dtypeTFT20130101r6   periods)abdef)r=   r>   listrangenparange
date_range)dfs    r#   df_cross_compatrX   m   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	d      t        j                  d      t         j                  t        j                  d      gd      S )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                     | j                   S r   r   r!   s    r#   timezone_aware_date_listr{      s     ==r%   c                     	 t        |t        j                        st        d      xs ddixs i  |r
|d<   |d<   	 fd}| ||
       y ||
       y)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                     t        |       D ]N  } j                  fi 
 t        fi 	}dv rd j                  d<   t	        j
                  |       P y )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#   comparez!check_round_trip.<locals>.compare   sl    v 	ABMM$/,/!$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                     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'matchr7   r_   )r(   raisesr   r   )r@   r   msgs      r#   test_invalid_enginer      s8    
:C	z	- =Iue<= = =s   6?c                     |r&t         s | j                  j                  d      | _        t        j                  dd      5  t        | |       d d d        y # 1 sw Y   y xY w)Nstrio.parquet.enginer   )r	   r<   rv   r=   option_contextr   )r@   r+   using_infer_stringr   s       r#   test_options_pyr     sQ    "6%--44U;				.		: /I./ / /s   AAc                 r    t        j                  dd      5  t        | |       d d d        y # 1 sw Y   y xY w)Nr   r   r=   r   r   )r@   r1   r   s      r#   test_options_fpr   
  s4     
		.	> /I./ / /   -6c                 r    t        j                  dd      5  t        | |       d d d        y # 1 sw Y   y xY w)Nr   autor   )r@   r1   r+   r   s       r#   test_options_autor     s4     
		.	7 /I./ / /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   )r   r   r   r   r=   r   )r1   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   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   ,  s    1 i(Jm,J  	W(()GJ,??  ! 	[,,-
0CC  #>+>'>N&B/B+BN./
|;RSE{%8 #6"# # ME{%8 #6"# /
|;VWE{%8 #6"# # JE{%8 #6"# ## #1># ## #
# ## #s0    E22E>)F
F2E;>F
FFc                     | }|j                  ||d        t        ||      }t        j                  ||       t        ||ddg      }t        j                  ||ddg          y N)r$   r}   r$   rM   rO   )r$   r<   r   r   r   r   rX   r+   r1   r   rW   results         r#   test_cross_engine_pa_fpr   W  sa     
BMM)BDM9)B/F&"%)Bc
CF&"c3Z.1r%   c                     | }|j                  ||d        t        ||      }t        j                  ||       t        ||ddg      }t        j                  ||ddg          y r   r   r   s         r#   test_cross_engine_fp_par   d  s_    	BMM)BDM9)B/F&"%)Bc
CF&"c3Z.1r%   c                       e Zd Zd Zd Zy)Basec                 z    t        j                  ||      5  t        |||d        d d d        y # 1 sw Y   y xY w)Nr   r}   )r(   r   r   )selfrW   r$   excerr_msgtemp_file_paths         r#   check_error_on_writezBase.check_error_on_writer  s7    ]]3g. 	Er>6tD	E 	E 	Es   1:c                 v    t        j                  |      5  t        |||d        d d d        y # 1 sw Y   y xY w)Nr   )r   external_error_raisedr   )r   rW   r$   r   r   s        r#   check_external_error_on_writez"Base.check_external_error_on_writew  s7    %%c* 	Er>6tD	E 	E 	Es   /8N)__name__
__module____qualname__r   r   r*   r%   r#   r   r   q  s    E
Er%   r   c                   Z   e Zd Zd Zd Zej                  j                  dg d      d        Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Zej                  j,                  ej                  j.                  d               Zy)	TestBasicc                     t        j                  g d      ddt        j                  d      t        j                  g d      fD ]  }d}| j                  ||t        ||        y )Nr3   r4   r7   rJ   z+to_parquet only supports IO with DataFrames)r=   Seriesrw   rT   arrayr   r   )r   r$   r   objr   s        r#   
test_errorzTestBasic.test_error~  s]    IIi LL$HHY
 	OC @C%%c6:sIN	Or%   c           	          t        j                  t        d      t        t        dd            d      }ddg|_        t        |||       y )NrB   r4   rC   ri   rn   r7   r_   r=   r>   rR   rS   r<   r   )r   r$   r   rW   s       r#   test_columns_dtypeszTestBasic.test_columns_dtypes  s=    \\T%[eAqk9JKL U^
Y/r%   r}   )Ngzipsnappybrotlic                 X    t        j                  dg di      }t        |||d|i       y )Nr9   r3   r}   r   r=   r>   r   )r   r$   r}   r   rW   s        r#   test_compressionzTestBasic.test_compression  s+    \\3	*+	60L	
r%   c           	          t        j                  t        d      t        t        dd            d      }t        j                  dt        d      i      }t	        ||||ddgi       y )NrB   r4   rC   r   ri   r<   r   r   r=   r>   rR   rS   r   )r   r$   r   rW   r   s        r#   test_read_columnszTestBasic.test_read_columns  sY    \\T%[eAqk9JKL<<4; 78"XJ/	
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 )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_filterszTestBasic.test_read_filters  sm    \\E!H~V
 <<A0*VH5%8$9ugN	
r%   c                    t        j                  d       t        j                  dg di      }t	        ||d       g dt        j
                  ddd      t        d	      g d
g}|D ]P  }||_        t        |t        j                        r |j                  j                  d       |_        t	        ||d       R g d|_        d|j                  _        t	        ||d       y )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_indexzTestBasic.test_write_index  s    I&\\3	*+Y	2 MM*ad;K	
  	7EBH%!1!1288..t4RI6		7 Y	2r%   c                     |}t        j                  dg di      }t         j                  j                  g d      }||_        t        |||       y )Nr9   r3   )rM   r4   )rM   r5   )rN   r4   )r=   r>   
MultiIndexfrom_tuplesr   r   )r   r+   r   r$   rW   r   s         r#   test_write_multiindexzTestBasic.test_write_multiindex  sB    \\3	*+))*HIY/r%   c           
         |}t        j                  d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          1 y )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_columnsz&TestBasic.test_multiindex_with_columns  s    m]DQ\\II!!!$44a#e*na5HIK
 ++!5)'61B , 
 4(f% 
	EBHRF3&c
3S#J	
	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 )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twor#  r$  r#  r$  r#  r$     )r#  r$  )r=   r>   reset_indexr   rR   rS   )r   r$   r   rW   r   r   arraysis           r#   test_write_ignoring_indexz#TestBasic.test_write_ignoring_index  s     \\	@A'+e< >>t>,	6x	

 \\/2:O
 		6x	
 ED
 \\qNa+A1QB+AB&
 >>t>,	6x	
	 ,Bs   +
C#
c                 0   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   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_multiindexz&TestBasic.test_write_column_multiindex  s    ]]../MN
\\II!!!$44V<j
 ]"%%FI'Ey y RF3 !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   )r4   r5   r4   r5   r4   r5   r4   r5   r5   r%  r%  r;   r  r  r   zColumn namer   )r=   r>   rT   r  r  r  r<   r   r   r   r   r   r$   r   r'  rW   s        r#   &test_write_column_multiindex_nonstringz0TestBasic.test_write_column_multiindex_nonstring"  s    
 E$
 \\II!!!$44V<f
 %h/

]"%%b&*mYWy RF3 !r%   c                     |}g dg dg}t        j                  t        j                  j	                  d      j                  d      |      }ddg|j                  _        t        |||       y )Nr   r"  r5   r0  r;   	ColLevel1	ColLevel2)	r=   r>   rT   r  r  r  r<   r   r   r   r+   r   r$   r'  rW   s         r#   #test_write_column_multiindex_stringz-TestBasic.test_write_column_multiindex_string3  sg      ED
 \\II!!!$44V<f
 (5

Y/r%   c                     |}g d}t        j                  t        j                  j	                  d      j                  d      |      }d|j                  _        t        |||       y )N)r_   r`   r7   r!  r5   r%  rC   r;   	StringCol)	r=   r>   rT   r  r  r  r<   r   r   r6  s         r#   test_write_column_index_stringz(TestBasic.test_write_column_index_stringD  sV      .\\II!!!$44V<f
 &

Y/r%   c                    g d}t        j                  t        j                  j	                  d      j                  d      |      }d|j                  _        |dk(  r| j                  ||t        d|       y t        |||       y )Nr4   r5   r6   rC   r5   r9  r;   NonStringColr   r+  )r=   r>   rT   r  r  r  r<   r   r   r,  r   r1  s        r#   !test_write_column_index_nonstringz+TestBasic.test_write_column_index_nonstringR  ss     \\II!!!$44V<f
 )

]"%%FI'Ey RF3r%   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      }|j                  ||       t        ||      }t        ||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 )Npyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r4   r5   r6   Nint64uint8)rM   rN   rZ   N)TFTNr=  )      ?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/   rP  result1result2r   s
             r#   test_dtype_backendzTestBasic.test_dtype_backendb  s     !23]" ;;$$G % D %]]?G<]]?G<]]#89]]#<=]]<9]]#8)D]]#8)D

 	ui(y8yGW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0r%   rH   )	rJ  rK  rL  objectzdatetime64[ns, UTC]rp   z	period[D]rN  ri   c                    t        j                  dt        j                  g |      i      }t        j                  dd       d }|dk(  r,t        j                  dt        j                  g d      i      }t        |||ddi|	       y )
NvaluerG   r   11.0.0rp   rN  rI  rH  r  )r=   r>   r   r(   r   r   )r   r+   rH   r   rW   r   s         r#   test_read_empty_arrayzTestBasic.test_read_empty_array  s      \\"E2

 	Ix0G||RXXb	:H
 	(*:;	
r%   c                    |dk7  rt        j                  |       t         |dddd      d      5 }|j                  |j	                                t        |j                  |	      }d d d        |}t        r$|j                  j                  t              |_        t        j                  |       y # 1 sw Y   LxY w)
Nr   iodataparquetzsimple.parquetrb)mode)contentr   )r(   r   openserve_contentreadr   urlr	   r<   rv   rV  r   r   )r   
httpserverdatapathr@   r$   rQ   rW   r   s           r#   test_parquet_read_from_urlz$TestBasic.test_parquet_read_from_url  s     V'(44DEDQ 	=UV$$QVVX$6jnnV<B	= '//66v>H
b(+	= 	=s   8B44B=N)r   r   r   r   r   r(   r/   parametrizer   r   r   r   r  r  r)  r.  r2  r7  r;  r?  rU  rZ  network
single_cpurh  r*   r%   r#   r   r   }  s    	O0 [[],NO
 P


&3.0.$
L44"0"04 .1` [[
	


0 [[[[
,  
,r%   r   c                   x   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&e
j                  jO                  d$      d%        Z(d& Z)e
j                  j!                  d'd(d)g e
jT                  d*d+ge
j                  j                  e+e,d,-      .       e
jT                   e-jZ                  d/d)d)d(d(       e-jZ                  d/d)d)d)d)      ge
j                  j                  e.d0	      .      g      d1        Z/d2 Z0d3 Z1d4 Z2d5 Z3d6 Z4d7 Z5d8 Z6y9):TestParquetPyArrowc                     |}t        j                  dd       t        j                  ddd      }|j	                  d       }||d<   g d|d	<   t        |||       y )
Nr   rY  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_basiczTestParquetPyArrow.test_basic  s[    Ix0 mmJ6GHnnT"=1Y+r%   c           	      p    |}t        j                  ddd      |d<   t        ||||ddg   dddgi	       y )
NrJ   r6   ro  rp  rr  ri   rn   r<   r   )r=   rV   r   )r   r+   ry   r   rW   s        r#   test_basic_subset_columnsz,TestParquetPyArrow.test_basic_subset_columns  sL     MM*aDUV=5)*"Xu$56	
r%   c                    |j                  |      }t        |t              sJ t        |      }t	        |      }|j                         }d |j                  d<   |d   j                  d      |d<   t        j                  ||       y )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_providedz=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  s    &&b&1	)U+++Y'
:&<<>-1)*(01D(E(L(LX(V$%
c8,r%   c                     t        j                  t        j                  d      j	                  dd      t        d            j                         }| j                  ||t        d|       y )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_columnsz)TestParquetPyArrow.test_duplicate_columns  sN    \\"))B-//15tE{KPPR!!J >		
r%   c                 v    t        j                  dt        j                  dd      i      }t        |||       y )NrM   1 dayr6   rK   )r=   r>   timedelta_ranger   r  s       r#   test_timedeltaz!TestParquetPyArrow.test_timedelta  s.    \\3 2 27A FGHY+r%   c                 z    t        j                  dg di      }| j                  ||t        j                  |       y )NrM   rM   r4   rc   )r=   r>   r   r   ArrowExceptionr  s       r#   test_unsupportedz#TestParquetPyArrow.test_unsupported  s1    \\3./ 	**2r73I3I9Ur%   c                     t        j                  ddt         j                        }t        j                  |dg      }t
        r#| j                  ||t        j                  |       y t        |||       y )Nr5   
   rG   fp16r]  r<   )
rT   rU   float16r=   r>   r   r   r   r  r   )r   r+   r   r]  rW   s        r#   test_unsupported_float16z+TestParquetPyArrow.test_unsupported_float16  sZ     yyBbjj1\\tfX6..B..	 RB/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                 h   t        j                  ddt         j                        }t        j                  |dg      } ||      }t        j                  t        j                        5  |j                  ||       d d d        t        j                  j                  |      rJ y # 1 sw Y   +xY w)Nr5   r  rG   r  r  )r   r$   )rT   rU   r  r=   r>   r   r   r   r  r   osr   isfile)r   r+   r  r   r]  rW   r   s          r#    test_unsupported_float16_cleanupz3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yyBbjj1\\tfX6#%%g&<&<= 	0MMtBM/	077>>$''''	0 	0s   *B((B1c           
         t        j                  t        j                  t        d            t        j                  g dt        j                  g d            t        j                  g dg dd      d	      }t        |||       y )
Nabcdef)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_categoricalz#TestParquetPyArrow.test_categorical#  sh    \\^^DN3^^=--.CD
 ^^4. 
" 	Y+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   r@   s3_bucket_publics3sor+   r   r  s3kws	            r#   test_s3_roundtrip_explicit_fsz0TestParquetPyArrow.test_s3_roundtrip_explicit_fs8  s\     ""6*T&&B$))**:;	
r%   c                 J    d|i}t        |||d|j                   d||       y )Nstorage_optionss3://r  r  r   r   )r   r@   r  r  r+   r   s         r#   test_s3_roundtripz$TestParquetPyArrow.test_s3_roundtripH  s:     "4()..//?@	
r%   partition_colr9   c                 :   t        j                  d       |j                         }|rL|j                  t        j                  |t        j                              }d}||   j                  |      ||<   t        ||||d|j                   dd|i|d |ddd		       y )
Nr  categoryr  z/parquet_dirr  )r   r}   r  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_dirz,TestParquetPyArrow.test_s3_roundtrip_for_dirU  s    
 	F#nn& %,,T]]="((-STK!+)4])C)J)J"*K& 	 )../|<*D1"/##'
 	
r%   c                     t        j                  d       t               }|j                  |       t	        |      }|r&t
        s |j                  j                  d      |_        t        j                  ||       y )Nr   r   )
r(   r   r   r   r   r	   r<   rv   r   r   )r   r@   r   bufferdf_from_bufs        r#   test_read_file_like_obj_supportz2TestParquetPyArrow.test_read_file_like_obj_supportw  s^    I&V$"6*&: ) 1 1 8 8 ?I
i5r%   c                 n   t        j                  d       |j                  dd       |j                  dd       t        j                  t        d      5  t        d       d d d        t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr   HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)r(   r   setenvr   OSErrorr   r   )r   r@   monkeypatchs      r#   test_expand_userz#TestParquetPyArrow.test_expand_user  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 )Nrr   rn   r   r}   r   r   r   shape)r   r   r+   ry   r   rW   s         r#   test_partition_cols_supportedz0TestParquetPyArrow.test_partition_cols_supported  sI     %
h~4Ph7H%++rxx777r%   c                     d}|g}|}|j                  ||d        t        ||       t        |      j                  |j                  k(  sJ y )Nrr   r  r  )r   r   r+   ry   r   partition_cols_listrW   s          r#   test_partition_cols_stringz-TestParquetPyArrow.test_partition_cols_string  sO    -.
h~4Ph(;<H%++rxx777r%   c                     | S r   r*   )xs    r#   <lambda>zTestParquetPyArrow.<lambda>  s    Q r%   ri   zpathlib.Path)idsc                     d}|g}|} ||      }|j                  ||       t        |      j                  |j                  k(  sJ y )Nr:   )r   )r   r   r  )	r   r   r+   r@   r  r   r  rW   r   s	            r#   test_partition_cols_pathlibz.TestParquetPyArrow.test_partition_cols_pathlib  sO     -."
d+>?D!''288333r%   c                 L    t        j                  g g       }t        |||       y )N)r   r<   r   r  s       r#   test_empty_dataframez'TestParquetPyArrow.test_empty_dataframe  s    \\B/Y+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  r4   typer   r  )	r   r=   r>   r   fieldbool_rv   rr   r   )r   r+   r   r   rW   r   out_dfs          r#   test_write_with_schemaz)TestParquetPyArrow.test_write_with_schema  sh    \\3A-(s!I JK4	2Xv,>	
r%   c           	         t        j                  d       t        j                  t        j                  g dd      t        j                  g dd      t        j                  g dd      d      }|r't
        r!t        ||||j                  d	d
i             nt        |||       t        j                  dt        j                  g dd      i      }t        |||       y )Nr   r3   rJ  rG   UInt32r[   ri   r  rZ   r   r   rM   rB  )r(   r   r=   r>   r   r	   r   rv   )r   r+   r   r   rW   s        r#    test_additional_extension_arraysz3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\YYy8YYy9YY/x@
 "6RBC<9PQRB/\\3		/ IJKY+r%   c                    t        j                  d       t        j                  dt        j                  g dd      i      }t        j
                  d|      5  |rNt        r|j                  d      }n|j                  d| d	      }|j                  j                  d      |_        n|j                  d| d	      }t        ||||
       d d d        y # 1 sw Y   y xY w)Nr   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_arrayz3TestParquetPyArrow.test_pyarrow_backed_string_array  s     	I&\\3		*:BS TUV/@ 		C!'!yy/H!yy7>2B!)DEH#+#3#3#:#:5#A 99w~.>a%@ARBB		C 		C 		Cs   A5CC!c                 J   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   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_typesz2TestParquetPyArrow.test_additional_extension_types  s|     	I&\\%%112JK__\13G%%11MM,D		
 	Y+r%   c                     d}t        j                  dt        j                  ddd      i      }t        |||d|i       y )	Nz2.6rM   z
2017-01-011nsr  r  rL   versionr   )r=   r>   rV   r   )r   r+   r   verrW   s        r#   test_timestamp_nanosecondsz-TestParquetPyArrow.test_timestamp_nanoseconds  s=     \\3lPR STUY)S9IJr%   c                    d|gz  }t        j                  |d|i      }|d d  }|j                  t        j                  k7  r	 dd l}|j                  j                  j                  |      }|j                  |j                         dz        }	|j                  j                  |	      |_        |d   j                  j                  |	      |d<   t        |||d|       y # t        $ r Y w xY w)N   index_as_colr   r]  r   <   F)r   r   )r=   r>   tzinfors   UTCpytzr   rq  	utcoffsetFixedOffsettotal_seconds
tz_convertdtr   r   )
r   r+   r{   r   idxrW   r   r  offsetrq  s
             r#   test_timezone_aware_indexz,TestParquetPyArrow.test_timezone_aware_index  s    +,,\\>3*?@ a5#**hll:V ../GH%%f&:&:&<r&AB!)!:!:2!>+3N+C+F+F+Q+QRT+U(YQ  s   C   	C,+C,c                     t        j                  d       t        j                  dt	        t        d            i      }|j                  ||       t        ||dg      }t        |      dk(  sJ y )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_groupsz)TestParquetPyArrow.test_filter_row_groups  s^    I&\\3U1X/0
i+in5EF6{ar%   z2ignore:make_block is deprecated:DeprecationWarningc                 D   dd l }|}t        j                  dddd      }|j                  d       }||d<   g d|d	<   |j                  j                  |      }|j                  t        j                  
      }|d   j                  d      |d<   t        |||ddi|       y )Nr   rJ   r6   ro  re   )rL   rq  rg   rr  rs  rt  )types_mapperrt   ztimestamp[us][pyarrow]rI  r   r$   r   r   )
r   r=   rV   r   Tablefrom_pandas	to_pandas
ArrowDtyperv   r   )	r   r+   ry   r   r   rW   ru  pa_tabler   s	            r#   &test_read_dtype_backend_pyarrow_configz9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s     mmJ6GdSnnT"=1==,,R0%%2==%A(01D(E(L(L$)
$% 	()4	
r%   c                     t        j                  dddgit        j                  ddgd      d	      }|j                         }|j                  j                  d      |_        t        |||d
di|       y )NrM   r4   r5   r6   rC   testr   zint64[pyarrow])r   rH   rI  r   r  )r=   r>   r?   r  r   rv   r   )r   r+   r   rW   r   s        r#   ,test_read_dtype_backend_pyarrow_config_indexz?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index1  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           	          t        j                  t        d      t        t        dd            d      }||_        t        |||       y )NrB   r4   rC   r   r   )r   r+   r<   r   rW   s        r#   test_columns_dtypes_not_invalidz2TestParquetPyArrow.test_columns_dtypes_not_invalid@  s9    2 \\T%[eAqk9JKL
Y+r%   c                 x    t        j                  t        j                  g dd            }t        |||       y )Nr  zcustom namer  r  )r=   r>   r?   r   r  s       r#   test_empty_columnsz%TestParquetPyArrow.test_empty_columns^  s'    \\} MNY+r%   c                     t        j                  ddgi      }ddi|_        |j                  ||       t	        ||      }|j                  |j                  k(  sJ y )Nr4   r]  test_attributer   )r=   r>   attrsr   r   )r   r   r+   rW   new_dfs        r#   test_df_attrs_persistencez,TestParquetPyArrow.test_df_attrs_persistencec  sT    \\A3x($a(
i+i3||rxx'''r%   c           	         t        j                  dddgiddg      }|j                  ||       t        j                  dd      5  t	        ||      }d d d        t        j
                  t        j                  	      }t        j                  dddgi|t        j                  ddg|
      t        j                  dgt        r|st        n|
            }t        j                  |       y # 1 sw Y   xY w)NrM   r  yrN   )r]  r   r   future.infer_stringTna_valuerG   )r]  rH   r   r<   )r=   r>   r   r   r   StringDtyperT   ru   r?   r	   rV  r   r   )r   r   r+   r   rW   r   rH   r   s           r#   test_string_inferencez(TestParquetPyArrow.test_string_inferencej  s    \\c3Z0c
C
i+4d; 	8!)B7F	8/<<Sz"((C:U3HH2;MFSX	

 	fh/	8 	8s   C00C9c           	         dd l }t        j                  dt        d      gid      }|j	                  ||j                  d|j                  d      fg             t        |      }t        rt        j                  ddgid	      }n#t        j                  dt        d      gid
      }t        j                  ||       y )Nr   rM   z123.00r  rG   r  )r   123ri   rV  )r   r=   r>   r   r   r   
decimal128r   r	   r   r   )r   r   r+   rW   r   r   s         r#   test_roundtrip_decimalz)TestParquetPyArrow.test_roundtrip_decimal~  s    \\3!2 34<MN
i		Cq9I3J2K(LMi(||S5'N(CH||S78+<*=$>hOH
fh/r%   c           
      &   dd l }dd lm} |j                  d|j	                  g d|j                               i      }|j                  ||       t        j                  dd      5  t        |      }d d d        t        j                  dg dit        j                  t        j                        t        j                  dgt        j                  t        j                                    }t        j                   |       y # 1 sw Y   xY w)	Nr   rM   )NrN   rZ   r  Tr   rG   )r]  rH   r<   )r   pyarrow.parquetr^  rP  r   large_stringrQ  r=   r   r   r>   r"  rT   ru   r?   r   r   )r   r   r+   rR  rP  r   r   s          r#   #test_infer_string_large_string_typez6TestParquetPyArrow.test_infer_string_large_string_type  s    $#rxx(8"//:KLMN
ui(4d; 	-!),F	-<<'(.."&&1HHcU".."&&*IJ

 	fh/	- 	-s   &DDc                    t        j                  dd      }t        j                  d      }|j                  t        j                  ddd      g|j	                  d            }|j                  |gdg	      }|j                  ||       t        |      }t        j                  dt        j                  ddd      gid
      }t        j                  ||       y )Nr   13.0.0rA  i@  r4   usr  	timestampr
  zdatetime64[us])r]  rH   )r(   r   r   rs   r/  rP  rQ  r   r=   r>   r   r   )r   r   r+   rR  arrrP  r   r   s           r#   test_non_nanosecond_timestampsz1TestParquetPyArrow.test_non_nanosecond_timestamps  s      H5  !23hh))$156R\\$=OhP#{m4
ui(i(<< 1 1$1 =>?"
 	fh/r%   c           	      "   t        j                  dd      } |j                  d |j                   |j                          |j
                               fg      }t        j                  dddiidddiig      }t        |||d|id	d
dii       y )Nr   r-  r7   r9   r4   r:   r5   r   to_pandas_kwargsmaps_as_pydictsr   )r   r   )	r(   r   r   map_ri   rC  r=   r>   r   )r   r+   r   r   r   rW   s         r#   test_maps_as_pydictsz'TestParquetPyArrow.test_maps_as_pydicts  s    %%i:\W\\.'.."2MGMMODEF
 \\EC8,usAh.?@A"F++.?-JK	
r%   N)7r   r   r   rv  rx  r}  r  r  r  r  r(   r/   r0   r   skipifr   ri  r   r   r   r  r  rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  filterwarningsr  r  r    r
   NotImplementedErrorrs   r   r  r  r  r#  r'  r+  r1  r6  r*   r%   r#   rm  rm    s   
,
-
,V
0 [[?   [[009NO[[[3*=>
( ? P
(,* [[
 
 [[

 

 [[[[_ubk:
 ; 
@6388 [[c;'h-G  	4	4,

,&C", KR:  [[ TU
 V
2
 [[FFLL kk''(.G (  FLL%H%%dAq!Q7%H%%dAq!Q7 kk''(L ( 		
0,10,,
(0(00<0
r%   rm  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  d        Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestParquetFastParquetc                     t        j                  d      }|j                  d      }|}t        j                  dd|      }|j                  d       }||d<   t        j                  dd      |d	<   t        |||       y )
Nr  z
US/EasternrJ   r6   rp  rr  r  rK   	timedelta)r(   r   timezoner=   rV   r   r  r   )	r   r1   ry   r"   r   r  rq  rW   ru  s	            r#   rv  z!TestParquetFastParquet.test_basic  sq    ""6*]]<(mmJb9nnT"=,,Wa@;Y+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 )
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_invalidz2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\T%[eAqk9JKL, V
!!"b#sI> f%
!!"b#sI> dAq!Q/dAq!Q/

 	!!"b#sI>r%   c                     t        j                  t        j                  d      j	                  dd      t        d            j                         }d}| j                  ||t        ||       y )Nr  rC   r6   r  r;   z9Cannot create parquet dataset with duplicate column namesr  r   r1   r   rW   r   s        r#   r  z-TestParquetFastParquet.test_duplicate_columns  sO    \\"))B-//15tE{KPPRI!!"b*c9Er%   c                     t        j                  dg di      }t        j                  ddt        j                  dgid      }t	        ||||d       y )	NrM   )TNFrE  g        r  rG   F)r   r   )r=   r>   rT   ru   r   )r   r1   r"   r   rW   r   s         r#   test_bool_with_nonez*TestParquetFastParquet.test_bool_with_none  sH    \\3 345<<sBFFC&8 9K 	YX5Qr%   c                     t        j                  dt        j                  ddd      i      }| j                  ||t        d |       t        j                  dg di      }d}| j                  ||t        ||       y )NrM   2013Mr6   r  r  z"Can't infer object conversion type)r=   r>   r  r   r   rC  s        r#   r  z'TestParquetFastParquet.test_unsupported  sh    \\3S! LMN!!"b*dIF \\3./2!!"b*c9Er%   c                     t        j                  dt        j                  t        d            i      }t	        |||       y )NrM   rB   )r=   r>   r  rR   r   )r   r1   r   rW   s       r#   r  z'TestParquetFastParquet.test_categorical  s.    \\3tE{ ;<=Y+r%   c                     dt        t        d            i}t        j                  |      }|j	                  ||d d       t        ||dg      }t        |      dk(  sJ y )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  z-TestParquetFastParquet.test_filter_row_groups  sY    $uQx.!\\!_
iPQRin5EF6{ar%   c           
      L    t        |||d|j                   dd|id |d       y )Nr  z/fastparquet.parquetr  )r}   r  r  r  )r   r@   r  r  r1   r   s         r#   r  z(TestParquetFastParquet.test_s3_roundtrip  s:     	)..//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 )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  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 )Nrr   r   rN  r   Fr4   rO  rS  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 )Nrr   rn   r   )r$   r}   partition_onr   Fr5   rO  rS  s           r#   test_partition_on_supportedz2TestParquetFastParquet.test_partition_on_supported9  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)Nrr   rn   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r$   r}   rW  r   )r(   r   r   r   )r   r   r1   ry   r   rW   r   s          r#   3test_error_on_using_partition_cols_and_partition_onzJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onI  sa     !%  	 ]]:S1 	MM$ +-  	 	 	s   AAc                 j    t        j                         }|j                         }t        ||||       y )Nr  )r=   r>   r  r   )r   r1   r   rW   r   s        r#   r  z+TestParquetFastParquet.test_empty_dataframe\  s&    \\^779YX>r%   c                     d|gz  }t        j                  |d|i      }|j                         }d|j                  _        t        ||||       y )Nr  r  r  r   r  )r=   r>   r  r   r   r   )r   r1   r{   r"   r   r  rW   r   s           r#   r   z0TestParquetFastParquet.test_timezone_aware_indexb  sL     +,,\\>3*?@779%YX>r%   c                    t        j                  |      j                  d       t        j                  t
              5  t        |d       d d d        t        j                  |      j                  d       y # 1 sw Y   /xY w)Ns   breakitr   r   F)
missing_ok)r   r   write_bytesr   r   	Exceptionr   unlink)r   r   s     r#   $test_close_file_handle_on_read_errorz;TestParquetFastParquet.test_close_file_handle_on_read_errorm  sb    Y++J7%%i0 	:=9	: 	Y&&%&8	: 	:s   A::Bc                     t        j                  ddgddgd      }t        |d      5 }|j                  |       d d d        t	        ||      }t        j                  ||       y # 1 sw Y   -xY w)Nr   r4   r8   r  wbr   )r=   r>   rb  r   r   r   r   )r   r$   r   rW   rQ   r   s         r#   test_bytes_file_namez+TestParquetFastParquet.test_bytes_file_namet  sh    \\aV1a&9:)T" 	aMM!	 i7
fb)		 	s   A((A1c                    t        j                  d       t        j                  ddgddgd      }t        j                  t
        d      5  |j                  |dd	       d d d        t        j                  |      j                  d
       t        j                  t
        d      5  t        |dd	       d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY w)Nr   r   r4   r8   r  zfilesystem is not implementedr   r7   r$   r  r\   )r(   r   r=   r>   r   r9  r   r   r   r_  r   r   r   rW   s      r#   test_filesystem_notimplementedz5TestParquetFastParquet.test_filesystem_notimplemented}  s    M*\\aV1a&9:]].6UV 	MMM)MeML	M 	Y++F3]].6UV 	L=UK	L 	L		M 	M	L 	L   C*CCCc                    t        j                  d       t        j                  ddgddgd      }t        j                  t
        d      5  |j                  |dd	       d d d        t        j                  |      j                  d
       t        j                  t
        d      5  t        |dd	       d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY w)Nr   r   r4   r8   r  z1filesystem must be a pyarrow or fsspec FileSystemr   r7   rg  r\   )r(   r   r=   r>   r   r   r   r   r   r_  r   rh  s      r#   test_invalid_filesystemz.TestParquetFastParquet.test_invalid_filesystem  s    I&\\aV1a&9:]]Q
 	I MM)I%MH	I
 	Y++F3]]Q
 	H 9G	H 	H	I 	I	H 	Hrj  c                    t        j                  d      }t        j                  ddgddgd      }t        j                  t
        d      5  |j                  |d|j                         d	d
i       d d d        t        j                  |      j                  d       t        j                  t
        d      5  t        |d|j                         d	d
i       d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY w)Nz
pyarrow.fsr   r4   r8   r  z8storage_options not supported with a pyarrow FileSystem.r   r   r7   r_   )r$   r  r  r\   )r(   r   r=   r>   r   r9  r   LocalFileSystemr   r   r_  r   )r   r   pa_fsrW   s       r#   .test_unsupported_pa_filesystem_storage_optionszETestParquetFastParquet.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$; C0$C-0C9c           	          d}t        j                  dt        t        dd            i      }|j	                  |       t        j                  t        |      5  t        |d       d d d        y # 1 sw Y   y xY w)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rn   r4   rC   r   numpy)rI  )	r=   r>   rR   rS   r   r(   r   r   r   )r   r$   r   r   rW   s        r#   test_invalid_dtype_backendz1TestParquetFastParquet.test_invalid_dtype_backend  se    % 	 \\5$uQ{"345
i ]]:S1 	;':	; 	; 	;s   A00A9N)r   r   r   rv  rA  r  rE  r  r  r  r(   r/   rk  r  r  r  rX  rZ  r  r   rb  re  ri  rl  rp  rs  r*   r%   r#   r;  r;    s    
,?*FR	F,  [[	
 	
/ / / &?	?9*LH6;r%   r;  )	NNNNNTFTr5   )H__doc__rs   decimalr   r\  r   r  r   rr  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/   r8  
pytestmarkfixturer    r7  r0   r$   r+   r1   r@   rX   ry   nowr  r>  minmaxstrptimer{   r   r   r   r   r   r   r   r   r   r   r   r   rm  r;  r*   r%   r#   <module>r     sN       	    - -    ' M KKST
KKG
 ""))9 #  !!&(;  " 
	
 	++$$!!*D % 	
010     T T  "  . hll+h//334h//334""#=?TU""#=?TU""#=?TU""#=?TU

 	BJ9 =///F((#V
2
2	E 	EG, G,T
~
 ~
Bq;T q;E%  M  s$   K* !K8 *K54K58LL