
    Mh'                        S r SSKrSSKJr  SSKJr  SSKrSSKrSSKr	SSK
r
SSKJr  SSKJr  SSKJr  SSKJrJrJr  SSKrSSKJr  SS	KJr  SS
KJrJrJrJ r J!r!   SSK"r"Sr# SSK%r%Sr&\
RN                  RQ                  S5      \
RN                  RQ                  S5      /r)\
RT                  " \
RV                  " S\
RN                  RY                  \&(       + =(       d
    \" SSS9S:H  SS9S9\
RV                  " S\
RN                  RY                  \#(       + SS9S9/S9S 5       r-\
RT                  S 5       r.\
RT                  S 5       r/\
RT                  S 5       r0\
RT                  S 5       r1\
RT                  S 5       r2\
RT                  " \R                  Rg                  \Rh                  Rj                  5      \R                  Rg                  \Rh                  Rl                  5      \R                  Rg                  \Rh                  Rn                  5      \R                  Rq                  SS 5      \R                  Rq                  S!S 5      \R                  Rq                  S"S 5      \R                  Rq                  S#S 5      /S9S$ 5       r9         S8S% jr:S& r;S' r<S( r=S) r>S* r?S+ r@S, rAS- rBS. rCS/ rD " S0 S15      rE " S2 S3\E5      rF " S4 S5\E5      rG " S6 S7\E5      rHg! \$ a    Sr# GNf = f! \$ a    Sr& GNf = f)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                     U R                   $ Nparamrequests    N/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/test_parquet.pyenginer#   ;   s    & ==    c                  F    [         (       d  [        R                  " S5        g)Nr   r   )_HAVE_PYARROWpytestskip r$   r"   par*   Q   s    =./r$   c                      [         (       d  [        R                  " S5        g[        SSS9S:X  a  [        R                  " S5        g)Nzfastparquet is not installedr   Tr   r   z.ArrayManager is not supported with fastparquetr   )_HAVE_FASTPARQUETr'   r(   r   r)   r$   r"   fpr-   X   s<    23  
(	6'	ADEr$   c                  8    [         R                  " / SQSS.5      $ )N         fooAB)pd	DataFramer)   r$   r"   	df_compatr9   a   s    <<ie455r$   c                      [         R                  " [        S5      [        [        SS5      5      [        R
                  " SSSS9/ SQ[         R                  " S	S
S9S.5      n U $ )N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                     [         R                  " [        S5      S[        R                  S// SQ/ SQ/ SQ[        [        SS5      5      [        R                  " S	S
5      R                  S5      [        R                  " SSSS9S[        R                  S// SQ[         R                  " SS	S9[         R                  " S5      [         R                  [         R                  " S5      /S.5      $ )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                     U R                   $ r   r   r    s    r"   timezone_aware_date_listrq      s     ==r$   c
                   ^ ^^^^^^^ T=(       d    SS0mT=(       d    0 mTc  T mU(       a
  UTS'   UTS'   UUUU UUUU4S jn
Tc'  [         R                  " 5        mU
" U	5        SSS5        gU
" U	5        g! , (       d  f       g= f)a  Verify parquet serializer and deserializer produce the same results.

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

Parameters
----------
df: Dataframe
engine: str, optional
    'pyarrow' or 'fastparquet'
path: str, optional
write_kwargs: dict of str:str, optional
read_kwargs: dict of str:str, optional
expected: DataFrame, optional
    Expected deserialization result, otherwise will be equal to `df`
check_names: list of str, optional
    Closed set of column names to be compared
check_like: bool, optional
    If True, ignore the order of index & columns.
repeat: int, optional
    How many times to repeat the test
compressionNr#   c           	         > [        U 5       HO  nTR                  " T40 T
D6  [        T40 T	D6nST;   a  S TR                  S'   [        R
                  " TUTTTS9  MQ     g )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"   compare!check_round_trip.<locals>.compare   se    vAMM$/,/!$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   	A77
Bc                 |    SSK Jn  UR                  U SS9nUR                  R                  R                  U:X  d   eg)zCheck partitions of a parquet file are as expected.

Parameters
----------
path: str
    Path of the dataset.
expected: iterable of str
    Expected partition names.
r   Nhive)partitioning)pyarrow.datasetdatasetr   schemanames)r   r   dsr   s       r"   check_partition_namesr      s9     !jjFj3G&&,,888r$   c                     Sn[         R                  " [        US9   [        U SS5        S S S 5        g ! , (       d  f       g = f)Nz.engine must be one of 'pyarrow', 'fastparquet'matchr3   rX   )r'   raises
ValueErrorr   )r9   msgs     r"   test_invalid_enginer      s-    
:C	z	-E51 
.	-	-s	   3
Ac                 |    [         R                  " SS5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nio.parquet.enginer   r7   option_contextr   )r9   r*   s     r"   test_options_pyr      s)     
		.		:# 
;	:	:   -
;c                 |    [         R                  " SS5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   )r9   r-   s     r"   test_options_fpr      s)     
		.	># 
?	>	>r   c                 |    [         R                  " SS5         [        U 5        S S S 5        g ! , (       d  f       g = f)Nr   autor   )r9   r-   r*   s      r"   test_options_autor     s)     
		.	7# 
8	7	7r   c                    [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   r   )
isinstancer   r   r   r7   r   )r-   r*   s     r"   test_options_get_enginer     sn   j+[9999j/AAAA			.		:*V,k::::*Y/====*]3_EEEE 
;
 
		.	>*V,o>>>>*Y/====*]3_EEEE 
?
 
		.	7*V,k::::*Y/====*]3_EEEE 
8	7 
;	:
 
?	>
 
8	7s'   A!GA!GA!G(
G
G%(
G6c                     SSK Jn   U R                  S5      nU R                  S5      n[        (       d  SO$[	        [
        R                  5      [	        U5      :  n[        (       d  SO$[	        [        R                  5      [	        U5      :  n[        =(       a    U(       + n[        =(       a    U(       + nU(       d  U(       d  U(       a4  SU S3n[        R                  " [        US9   [        S	5        S S S 5        O/S
n[        R                  " [        US9   [        S	5        S S S 5        U(       a4  SU S3n[        R                  " [        US9   [        S	5        S S S 5        g Sn[        R                  " [        US9   [        S	5        S S S 5        g g g ! , (       d  f       N{= f! , (       d  f       N= f! , (       d  f       g = f! , (       d  f       g = f)Nr   )VERSIONSr   r   FzPandas requires version .z. or newer of .pyarrow.r   r   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      sp    1 i(Jm,J } 	W(()GJ,??  !  	[,,-
0CC  #>+>'>N&B/B+BN./
|;RSE{%86" 98 <E{%86" 9 /
|;VWE{%86" 98 @E{%86" 98# #1> 98 98
 98 98s0   )FF+F<G
F(+
F9<
G

Gc                    U n[         R                  " 5        nUR                  XAS S9  [        XBS9n[         R                  " XS5        [        XBSS/S9n[         R                  " XSSS/   5        S S S 5        g ! , (       d  f       g = fN)r#   rs   r#   rF   rH   )r#   columnsrz   r   r   r   r{   rQ   r*   r-   rP   r   results         r"   test_cross_engine_pa_fpr   K  so     
B		d
d48d.
f)dSzB
f#sn5 
		   AA88
Bc                    U n[         R                  " 5        nUR                  XBS S9  [        XAS9n[         R                  " XS5        [        XASS/S9n[         R                  " XSSS/   5        S S S 5        g ! , (       d  f       g = fr   r   r   s         r"   test_cross_engine_fp_par   Y  sm    	B		d
d48d.
f)dSzB
f#sn5 
		r   c                 &   [         R                  " S/ SQ05      nSn[        R                  " 5        n[        R                  " [
        USSS9   UR                  X05        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)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  sv    	sI&	'B	1  
	d''"$)	
 MM$'
 
	
 
 
	s#   BA1 B1
A?	;B
Bc                       \ rS rSrS rS r\R                  R                  \R                  R                  S 5       5       r
Srg)Baseiw  c           	          [         R                  " 5        n[        R                  " X4S9   [	        XUS S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rs   )rz   r   r'   r   r   )selfrP   r#   excerr_msgr   s         r"   check_error_on_writeBase.check_error_on_writex  sC    __$s22V> 3 22 s!   AAA
A	A
A'c           	          [         R                  " 5        n[         R                  " U5         [        XUS S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   )rz   r   external_error_raisedr   )r   rP   r#   r   r   s        r"   check_external_error_on_write"Base.check_external_error_on_write~  sE    __$))#.2V> / .. s!   AA
A

A	A
A)c                 (   US:w  a  [         R                  " U5        [        U" SSSS5      SS9 nUR                  UR	                  5       S9  [        UR                  5      nS S S 5        [        R                  " WU5        g ! , (       d  f       N&= f)	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_urlBase.test_parquet_read_from_url  sz     V'(44DEDQUV$$QVVX$6jnn-B R 	b), RQs   3B
Br)   N)__name__
__module____qualname____firstlineno__r   r   r'   marknetwork
single_cpur   __static_attributes__r)   r$   r"   r   r   w  s<    ?? [[[[-  -r$   r   c                       \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       rSrg)	TestBasici  c                     [         R                  " / SQ5      SS[         R                  " S5      [        R                  " / SQ5      4 H  nSnU R                  X![        U5        M     g )Nr/   r0   r3   rC   z+to_parquet only supports IO with DataFrames)r7   Seriesrm   rM   r   r   r   )r   r#   objr   s       r"   
test_errorTestBasic.test_error  sR    IIi LL$HHY
C @C%%c:sC
r$   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      nSS/Ul        [        X!5        g )Nr;   r0   r<   r_   rd   r3   rX   )r7   r8   rK   rL   r   r   )r   r#   rP   s      r"   test_columns_dtypesTestBasic.test_columns_dtypes  s9    \\T%[eAqk9JKL U^
$r$   rs   )Ngzipsnappybrotlic                 P    [         R                  " S/ SQ05      n[        X1SU0S9  g )Nr5   r/   rs   r   r7   r8   r   )r   r#   rs   rP   s       r"   test_compressionTestBasic.test_compression  s$    \\3	*+=+2NOr$   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      n[         R                  " S[        S5      05      n[	        X!USS/0S9  g )Nr;   r0   r<   r   r_   r   r   r   r7   r8   rK   rL   r   )r   r#   rP   r   s       r"   test_read_columnsTestBasic.test_read_columns  sQ    \\T%[eAqk9JKL<<4; 78	H:7N	
r$   c           
          [         R                  " [        [        S5      5      [        S5      S.5      n[         R                  " SSS/05      n[	        UUUUSS/0S	/S/S
.SS9  g )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_filtersTestBasic.test_read_filters  sm    \\E!H~V
 <<A0*VH5%8$9ugN	
r$   c                    US:g  n[         R                  " S/ SQ05      n[        X15        / SQ[         R                  " SSS9[	        S5      / S	Q/nU HR  nXSl        [        U[         R                  5      (       a   UR
                  R                  S 5      Ul        [        X1US
9  MT     / SQUl        SUR
                  l	        [        X15        g )Nr   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_indexTestBasic.test_write_index  s    -\\3	*+$ MM*a0K	
 EH%!1!12288..t4R[A	  $r$   c                     Un[         R                  " S/ SQ05      n[         R                  R                  / SQ5      nXCl        [        X25        g )Nr5   r/   )rF   r0   )rF   r1   )rG   r0   )r7   r8   
MultiIndexfrom_tuplesr
  r   )r   r*   r#   rP   r
  s        r"   test_write_multiindexTestBasic.test_write_multiindex  s<    \\3	*+))*HI$r$   c           	         Un[         R                  " SSSS9n[         R                  " [        R                  R                  S5      R                  S[        U5      -  S45      [        S5      S9n[         R                  R                  S	S
/U/SS/S9nUR                  S S9nXV4 H(  nXtl        [        XB5        [        XBSSS/0USS/   S9  M*     g )Nz01-Jan-2018z01-Dec-2018MS)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_columns&TestBasic.test_multiindex_with_columns  s    m]F\\II!!!$44a#e*na5HIK
 ++!5)'61B , 
 4(%EHR(S#J(?"cSVZ.	 &r$   c                    [         R                  " / SQ/ SQS.5      nS SS.nUR                  SS9n[        X!X4S9  [         R                  " / SQ/ SQS./ S	QS
9n[        X!X4S9  / SQ/ SQ/n[         R                  " [	        [        S5      5      [        S5       Vs/ s H  of* PM     snS.US
9nUR                  SS9n[        X!X4S9  g s  snf )Nr/   )qrs)rF   rG   F)rs   r
  T)dropr   r   )zyxwvutsrr
  rX   rX   rY   rY   r3   r3   quxr7  onetwor9  r:  r9  r:  r9  r:     )r9  r:  )r7   r8   reset_indexr   rK   rL   )r   r#   rP   r   r   arraysis          r"   test_write_ignoring_index#TestBasic.test_write_ignoring_index  s     \\	@A'+e< >>t>,,R \\/2:O
 	,R ED
 \\qNa+A1B+AB&
 >>t>,,R	 ,Bs   C

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

]"%%b*mLy R( !r$   c                     Un/ SQ/ SQ/n[         R                  " [        R                  R	                  S5      R                  S5      US9nSS/UR                  l        [        XB5        g )Nr6  r8  r1   rH  r  	ColLevel1	ColLevel2)	r7   r8   rM   r!  r"  r#  r   r   r   r   r*   r#   r=  rP   s        r"   #test_write_column_multiindex_string-TestBasic.test_write_column_multiindex_string6  sc      ED
 \\II!!!$44V<f
 (5

$r$   c                     Un/ SQn[         R                  " [        R                  R	                  S5      R                  S5      US9nSUR                  l        [        XB5        g )N)rX   rY   r3   r7  r1   r;  r<   r  	StringCol)	r7   r8   rM   r!  r"  r#  r   r  r   rO  s        r"   test_write_column_index_string(TestBasic.test_write_column_index_stringG  sR      .\\II!!!$44V<f
 &

$r$   c                    / SQn[         R                  " [        R                  R	                  S5      R                  S5      US9nSUR                  l        US:X  a  U R                  X1[        S5        g [        X15        g )Nr0   r1   r2   r<   r1   rS  r  NonStringColr   rB  )r7   r8   rM   r!  r"  r#  r   r  r   rC  r   rI  s       r"   !test_write_column_index_nonstring+TestBasic.test_write_column_index_nonstringU  sk     \\II!!!$44V<f
 )

]"%%I'E R(r$   c                    [         R                  " S5      nUS:X  a.  [         R                  R                  SS9nUR	                  U5        [
        R                  " [
        R                  " / SQS5      [
        R                  " / SQS5      [
        R                  " / SQ5      [
        R                  " / S	Q5      [
        R                  " / S
QS5      [
        R                  " / SQS5      [
        R                  " / SQS5      S.5      n[        R                  " 5        nUR                  XV5        [        XaS9n[        XaSS9nS S S 5        WS   R                  [        R                  " S5      :X  d   e[        R                  " [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / S	QSS9[        R                  " / S
QSS9[        R                  " / SQSS9[        R                  " / SQSS9S.5      n	US:X  a   WR!                  SSS9nU	R!                  SSS9n	[        R"                  " WU	5        g ! , (       d  f       GN'= f)Nzpyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r0   r1   r2   Nint64uint8)rF   rG   rS   N)TFTNrX  )      ?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   r0  r{   )
r   r#   r!   pqr   rn  r   result1result2r   s
             r"   test_dtype_backendTestBasic.test_dtype_backende  s     !23]" ;;$$G % D %]]?G<]]?G<]]#89]]#<=]]<9]]#8)D]]#8)D

 __$NN5'"47G"4FVWG	  s|!!RXXi%8888<<XXoW=XXoW=XX38DXX7yIXXl':XX39EXX39E

 ]" ll3Ql/G}}Sq}1H
gx0/ s   %I""
I1rA   )	rf  rg  rh  objectzdatetime64[ns, UTC]rf   z	period[D]rj  r_   c                     [         R                  " S[         R                  " / US905      nS nUS:X  a+  [         R                  " S[         R                  " / SS905      n[        X1SS0US9  g )Nvaluer@   rf   rj  re  rc  r   )r7   r8   r   r   )r   r*   rA   rP   r   s        r"   test_read_empty_arrayTestBasic.test_read_empty_array  sp      \\"E2
 G||RXXb	:H
 	2B Ch	
r$   r)   N)r   r   r   r   r   r   r'   r   parametrizer   r   r  r  r  r*  r?  rE  rJ  rP  rU  rZ  rs  rx  r   r)   r$   r"   r   r     s    	D% [[],NOP PP

&%0%&S@))"%"%) /1b [[
	


r$   r   c                      \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  \" 5       S	S
9\R                  R                  \(       + SS
9\R                  R#                  S\\R(                  /5      S 5       5       5       rS r\R                  R.                  S 5       r\R                  R.                  S 5       r\R                  R.                  \R                  R#                  SS// /5      S 5       5       rS rS rS rS r\R                  R#                  S\S /SS/S9S 5       rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(S& r)S' r*S( r+S) r,S* r-S+ r.\R                  R                  \/S,S
9S- 5       r0S. r1S/r2g0)1TestParquetPyArrowi  c                     Un[         R                  " SSSS9nUR                  S 5      nXCS'   / SQUS'   [        X15        g )NrC   r2   Europe/BrusselsrE   tzdatetime_tzTNTbool_with_none)r7   rO   r  r   )r   r*   ro   rP   dtis        r"   
test_basicTestParquetPyArrow.test_basic  sE     mmJ6GHnnT"=1 r$   c                 d    Un[         R                  " SSSS9US'   [        UUUSS/   SSS/0S	9  g )
NrC   r2   r~  r  r  r_   rd   r   r   )r7   rO   r   )r   r*   ro   rP   s       r"   test_basic_subset_columns,TestParquetPyArrow.test_basic_subset_columns  sI     MM*aDUV=5)*"Xu$56		
r$   c                     UR                  US9n[        U[        5      (       d   e[        U5      n[	        U5      nUR                  5       nS UR                  S'   [        R                  " XV5        g )Nr   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_provided=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  sd    &&b&1	)U++++Y'
:&<<>-1)*
c,r$   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nU R                  X![        S5        g )N   r<   r2   aaar  zDuplicate column names found	r7   r8   rM   rN   reshaperK   r&  r   r   r   r*   rP   s      r"   test_duplicate_columns)TestParquetPyArrow.test_duplicate_columns  sG    \\"))B-//15tE{KPPR!!"*6TUr$   c                 p    [         R                  " S[         R                  " SSS905      n[        X!5        g )NrF   1 dayr2   rD   )r7   r8   timedelta_ranger   r  s      r"   test_timedelta!TestParquetPyArrow.test_timedelta  s*    \\3 2 27A FGH r$   c                 x    [         R                  " S/ SQ05      nU R                  X![        R                  5        g )NrF   rF   r0   r\   )r7   r8   r   r   ArrowExceptionr  s      r"   test_unsupported#TestParquetPyArrow.test_unsupported  s-    \\3./ 	**273I3IJr$   c                     [         R                  " SS[         R                  S9n[        R                  " US/S9n[
        (       a!  U R                  X1[        R                  5        g [        X15        g )Nr1   
   r@   fp16r   r   )
rM   rN   float16r7   r8   r
   r   r   r  r   )r   r*   r   rP   s       r"   test_unsupported_float16+TestParquetPyArrow.test_unsupported_float16  sP     yyBbjj1\\tfX6..rw7M7MNR$r$   zqPyArrow does not cleanup of partial files dumps when unsupported dtypes are passed to_parquet function in windowsr   zfloat16 works on 15	path_typec                    [         R                  " SS[         R                  S9n[        R                  " US/S9n[
        R                  " 5        nU" U5      n[
        R                  " [        R                  5         UR                  XaS9  S S S 5        [        R                  R                  U5      (       a   e S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)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_cleanup3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yyBbjj1\\tfX6__(X&D))'*@*@A43 Bww~~d+++++	 AA s$   -C=C.C
C	C
C$c                 "   [         R                  " 5       n[         R                  " [        S5      5      US'   [         R                  " / SQ[         R                  " / SQ5      S9US'   [         R                  " / SQ/ SQS	S
9US'   [        X!5        g )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_categorical#TestParquetPyArrow.test_categorical  so    \\^..h03 ..5%%&;<
3 ..*PT
3 	 r$   c                     [         R                  " S5      nUR                  " S0 UD6nSU0n[        UUUR                   S3UUS9  g )Ns3fs
filesystem/pyarrow.parquetr   r   r   r)   )r'   r   S3FileSystemr   r  )r   r9   s3_public_bucketr*   s3sor  s3kws           r"   test_s3_roundtrip_explicit_fs0TestParquetPyArrow.test_s3_roundtrip_explicit_fs   sU    ""6*&&B$))**:;	
r$   c                 B    SU0n[        UUSUR                   S3UUS9  g )Nstorage_optionss3://r  r  r   r  )r   r9   r  r*   r  s        r"   test_s3_roundtrip$TestParquetPyArrow.test_s3_roundtrip-  s7     "4()..//?@	
r$   partition_colr5   c                 :   [         R                  " S5        UR                  5       nU(       aJ  UR                  [        R                  U[        R                  5      5      nSnXd   R                  U5      Xd'   [        UUUSUR                   S3SU0US US.SSS	9  g )
Nr  categoryr  z/parquet_dirr  )r  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_dir,TestParquetPyArrow.test_s3_roundtrip_for_dir9  s     	F#nn& %,,T]]="((-STK!+)4)C)J)J"*K& 	 )../|<*D1"/##'
 	
r$   c                     [         R                  " S5        [        5       nUR                  U5        [	        U5      n[
        R                  " X5        g )Nr   )r'   r   r   r   r   rz   r{   )r   r9   bufferdf_from_bufs       r"   test_read_file_like_obj_support2TestParquetPyArrow.test_read_file_like_obj_support`  s=    I&V$"6*
i5r$   c                 |   [         R                  " S5        UR                  SS5        UR                  SS5        [         R                  " [        SS9   [        S5        S S S 5        [         R                  " [        SS9   UR                  S5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr   HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)r'   r   setenvr   OSErrorr   r   )r   r9   monkeypatchs      r"   test_expand_user#TestParquetPyArrow.test_expand_userg  s    I&6=1=-8]]7*<=)* >]]7*<=  !12 >= >===s   BB-
B*-
B;c                     SS/nUnUR                  XS S9  [        X5        [        U5      R                  UR                  :X  d   eg )Nrh   rd   r  rs   r   r   r   shape)r   r  r*   ro   r  rP   s         r"   test_partition_cols_supported0TestParquetPyArrow.test_partition_cols_supportedp  sE     %
h4Ph7H%++rxx777r$   c                     SnU/nUnUR                  XS S9  [        X5        [        U5      R                  UR                  :X  d   eg )Nrh   r  r  )r   r  r*   ro   r  partition_cols_listrP   s          r"   test_partition_cols_string-TestParquetPyArrow.test_partition_cols_stringx  sJ    -.
h4Ph<H%++rxx777r$   c                     U $ r   r)   )xs    r"   <lambda>TestParquetPyArrow.<lambda>  s    Qr$   r_   zpathlib.Path)idsc                     SnU/nUnU" U5      nUR                  XS9  [        U5      R                  UR                  :X  d   eg )Nr6   )r  )r   r   r  )	r   r  r*   r9   r  r  r  rP   r   s	            r"   test_partition_cols_pathlib.TestParquetPyArrow.test_partition_cols_pathlib  sL     -."
d?D!''288333r$   c                 D    [         R                  " / / S9n[        X!5        g )N)r
  r   r   r  s      r"   test_empty_dataframe'TestParquetPyArrow.test_empty_dataframe  s    \\B/ r$   c                     SS K n[        R                  " SSS/05      nUR                  " UR                  " SUR
                  " 5       S9/5      nUR                  [        5      n[        X1SU0US9  g )Nr   r  r0   )typer   r1  )	r   r7   r8   r   fieldbool_rl   rh   r   )r   r*   r   rP   r   out_dfs         r"   test_write_with_schema)TestParquetPyArrow.test_write_with_schema  s[    \\3A-(s!I JK4x.@6Rr$   c           	      h   [         R                  " S5        [        R                  " [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / SQSS9S.5      n[        X!5        [        R                  " S	[        R                  " / S
QSS905      n[        X!5        g )Nr   r/   rf  r@   UInt32rT   r_   rF   rG   rS   rF   r]  )r'   r   r7   r8   r   r   r  s      r"    test_additional_extension_arrays3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\YYy8YYy9YY/x@
 	 \\3		/ IJK r$   c           
      &   [         R                  " S5        [        R                  " S[        R                  " / SQSS905      n[        R
                  " SU5         [        X1UR                  SU S35      S	9  S S S 5        g ! , (       d  f       g = f)
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_array3TestParquetPyArrow.test_pyarrow_backed_string_array  sl    I&\\3		*:BS TUV/@Rbii'.AQQR8S.TU A@@s   B
Bc                 B   [         R                  " S5        [        R                  " [        R                  R                  / SQ5      [        R                  " SSSS9[        R                  R                  [        R                  " SSSS95      S.5      n[        X!5        g )	Nr   ))r   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_types2TestParquetPyArrow.test_additional_extension_types  sx     	I&\\%%112JK__\13G%%11MM,D		
 	 r$   c           	      x    Sn[         R                  " S[         R                  " SSSS905      n[        X1SU0S9  g )	Nz2.6rF   z
2017-01-011nsr  r  rE   versionr   )r7   r8   rO   r   )r   r*   verrP   s       r"   test_timestamp_nanoseconds-TestParquetPyArrow.test_timestamp_nanoseconds  s9     \\3lPR STUy#.>?r$   c                     UR                   [        R                  R                  :w  a,  UR	                  [
        R                  R                  SS95        SU/-  n[        R                  " USU0S9n[        XRSS9  g )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utcrm  r'   r   rl  r7   r8   r   )r   r!   r*   rq   idxrP   s         r"   test_timezone_aware_index,TestParquetPyArrow.test_timezone_aware_index  sx    #**h.?.?.C.CC!!H "  +,,\\>3*?@ 	U3r$   c                 8   [         R                  " S5        [        R                  " S[	        [        S5      5      05      n[        R                  " 5        nUR                  X1S9  [        X1S/S9nS S S 5        [        W5      S:X  d   eg ! , (       d  f       N = f)Nr   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_groups)TestParquetPyArrow.test_filter_row_groups  sv    I&\\3U1X/0__$MM$M*!$^4DEF  6{a s   B
Bc                 (   [         R                  " [        R                  R	                  S5      R                  S5      / SQS9n[        R                  " 5        nUR                  XAS9  [        XA5      nS S S 5        U(       a@  [        WR                  [         R                  R                  R                  5      (       d   eg [        WR                  [         R                  R                  R                  5      (       d   eg ! , (       d  f       N= f)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_manager,TestParquetPyArrow.test_read_parquet_manager  s    \\II!!!$44W=
 __$MM$M*!$+F  fkk277+<+<+I+IJJJJfkk277+<+<+I+IJJJJ s   D
Dc           	         SS K nUn[        R                  " SSSS9nUR                  S 5      nXTS'   / SQUS'   UR                  R                  U5      nUR                  [        R                  S	9n[        (       ah  US
   R                  S5      US
'   US   R                  S5      US'   US   R                  [        R                  " UR                  " SSS95      5      US'   [        UUSS0US9  g )Nr   rC   r2   r~  r  r  r  r  )types_mapperri   ztimestamp[us][pyarrow]rj   us)unitr  re  r   r#   r   r   )r   r7   rO   r  Tablefrom_pandas	to_pandas
ArrowDtyper	   rl   	timestampr   )r   r*   ro   r   rP   r  pa_tabler   s           r"   &test_read_dtype_backend_pyarrow_config9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s     mmJ6GHnnT"=1==,,R0%%2==%A#+J#7#>#>?W#XHZ ,45H,I,P,P(-H() '/}&=&D&Dg//T>OPQ'H]# 	()4		
r$   c                 *   [         R                  " SSS/0[         R                  " SS/SS9SS	9nUR                  5       nS
S Kn[        UR                  5      [        S5      :  a   UR                  R                  S5      Ul        [        UUSS0US9  g )NrF   r0   r1   r2   r<   testr  zint64[pyarrow])r
  rA   r   z11.0.0re  r   r5  )
r7   r8   Indexr&  r   r   r   r
  rl   r   )r   r*   rP   r   r   s        r"   ,test_read_dtype_backend_pyarrow_config_index?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index  s    \\1a&M1a&v!>FV
 7797&&''(*;;%^^223CDHN()4		
r$   c           	         [         R                  " [        S5      [        [        SS5      5      S.5      nSS/Ul        [        X!5        SS/Ul        [        R                  " [        SS	9   [        X!5        S S S 5        [        R                  " S
SSSS5      [        R                  " S
SSSS5      /Ul        [        X!5        g ! , (       d  f       NS= f)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_invalid2TestParquetPyArrow.test_columns_dtypes_not_invalid&  s    \\T%[eAqk9JKL V
  f%
]].e<R$ = dAq!Q/dAq!Q/

 	  =<s   ,C
Cc                 l    [         R                  " [         R                  " / SQSS9S9n[        X!5        g )Nr   custom namer@  r5  r7   r8   rA  r   r  s      r"   test_empty_columns%TestParquetPyArrow.test_empty_columns:  s#    \\} MN r$   c                     US-  n[         R                  " SS/0S9nSS0Ul        UR                  X2S9  [	        X2S9nUR                  UR                  :X  d   eg )Nztest_df_metadata.pr0   r   test_attributer   )r7   r8   attrsr   r   )r   r  r*   r   rP   new_dfs         r"   test_df_attrs_persistence,TestParquetPyArrow.test_df_attrs_persistence?  s[    ..\\A3x($a(
d&d.||rxx'''r$   c           	      f   US-  n[         R                  " SSS/0SS/S9nUR                  USS9  [         R                  " S	S
5         [	        USS9nS S S 5        [         R                  " SSS/0S[         R
                  " SS/SS9S9n[        R                  " WU5        g ! , (       d  f       NU= f)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   rA  rz   r{   r   r  r*   r   rP   r   r   s          r"   test_string_inference(TestParquetPyArrow.test_string_inferenceG  s    33\\c3Z0c
C
d9-4d;!$y9F <<<Sz")((C:-DE

 	fh/ <;s   B""
B0znot supported before 11.0c           	      *   SS K nUS-  n[        R                  " S[        S5      /0SS9nUR	                  X2R                  SUR                  S5      4/5      S9  [        U5      n[        R                  " SS	/0S
S9n[        R                  " XV5        g )Nr   z	decimal.prF   z123.00r  r@   r  )r   123zstring[python])
r   r7   r8   r   r   r   
decimal128r   rz   r{   rY  s          r"   test_roundtrip_decimal)TestParquetPyArrow.test_roundtrip_decimalU  s     	+%\\3!2 34<MN
d99sBMM!4D.E-F#GHd#<<ug6FG
f/r$   c           	         SS K nSS KJn  US-  nUR                  SUR	                  / SQUR                  5       5      05      nUR                  XT5        [        R                  " SS5         [        U5      nS S S 5        [        R                  " S/ SQ0S[        R                  " S/SS9S	9n[        R                  " WU5        g ! , (       d  f       NT= f)
Nr   zlarge_string.prF   )NrG   rS   rW  TrX  r@   )r   rA   r   )r   pyarrow.parquetr   rn  r   large_stringro  r7   r   r   r8   rA  rz   r{   )r   r  r*   rp  r   rn  r   r   s           r"   #test_infer_string_large_string_type6TestParquetPyArrow.test_infer_string_large_string_typea  s    $**#rxx(8"//:KLMN
u#4d;!$'F <<<'()HHcU*AB

 	fh/ <;s   +C
Cr)   N)3r   r   r   r   r  r  r  r  r  r  r  r'   r   rl  r   skipifr
   rz  strpathlibPathr  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r%  r/  r<  rB  rG  rL  rS  rZ  r   r_  rd  r   r)   r$   r"   r|  r|    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$   r|  c                   <   \ rS rSrS rS rS r\R                  R                  \
" \R                  5      \
" S5      :  SS9S 5       rS	 rS
 rS r\R                  R"                  S 5       rS rS rS rS r\R                  R/                  \" 5       SS9S 5       r\R                  R                  \=(       a    \
" \R                  5      \
" S5      :  SS9S 5       rS rS rS rS r S r!S r"S r#\R                  R/                  \" 5       SS9S 5       r$Sr%g) TestParquetFastParqueti  c                     Un[         R                  " SSSS9nUR                  S 5      nXCS'   [         R                  " SSS9US'   [	        X15        g )	NrC   r2   z
US/Easternr  r  r  rD   	timedelta)r7   rO   r  r  r   )r   r-   ro   rP   r  s        r"   r  !TestParquetFastParquet.test_basic  sM    mmJlCnnT"=,,Wa@; r$   c           	         [         R                  " [        S5      [        [        SS5      5      S.5      n[        nSnSS/Ul        U R                  X!X45        SS/Ul        U R                  X!X45        [        R                  " S	SSSS5      [        R                  " S	SSSS5      /Ul        U R                  X!X45        g )
Nr;   r0   r<   r   rB  r   rU   rV   rE  )r7   r8   rK   rL   rC  r   r   ri   )r   r-   rP   errr   s        r"   test_columns_dtypes_invalid2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\T%[eAqk9JKL, V
!!"#3 f%
!!"#3 dAq!Q/dAq!Q/

 	!!"#3r$   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nSnU R                  X![        U5        g )Nr  r<   r2   r  r  z9Cannot create parquet dataset with duplicate column namesr  r   r-   rP   r   s       r"   r  -TestParquetFastParquet.test_duplicate_columns  sK    \\"))B-//15tE{KPPRI!!"*c:r$   z2.0.0z$fastparquet uses np.float_ in numpy2r   c                     [         R                  " S/ SQ05      n[         R                  " SS[        R                  S/0SS9n[	        X!USS9  g )	NrF   )TNFr`  g        r  r@   F)r   rx   )r7   r8   rM   rk   r   r   r-   rP   r   s       r"   test_bool_with_none*TestParquetFastParquet.test_bool_with_none  sF    
 \\3 345<<sBFFC&8 9K 	(Fr$   c           	          [         R                  " S[         R                  " SSSS905      nU R                  X![        S 5        [         R                  " S/ SQ05      nSnU R                  X![        U5        g )NrF   2013Mr2   r  r  z"Can't infer object conversion type)r7   r8   r  r   r   rt  s       r"   r  'TestParquetFastParquet.test_unsupported  s`    \\3S! LMN!!"*d; \\3./2!!"*c:r$   c                     [         R                  " S[         R                  " [        S5      5      05      n[	        X!5        g )NrF   r;   )r7   r8   r  rK   r   )r   r-   rP   s      r"   r  'TestParquetFastParquet.test_categorical  s*    \\3tE{ ;<= r$   c                    S[        [        S5      5      0n[        R                  " U5      n[        R
                  " 5        nUR                  XAS SS9  [        XAS/S9nS S S 5        [        W5      S:X  d   eg ! , (       d  f       N = f)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%  -TestParquetFastParquet.test_filter_row_groups  sp    $uQx.!\\!___$MM$tqMQ!$^4DEF  6{a s   A99
Bc           	      D    [        UUSUR                   S3SU0S US.S9  g )Nr  z/fastparquet.parquetr  )rs   r  r  r  )r   r9   r  r-   r  s        r"   r  (TestParquetFastParquet.test_s3_roundtrip  s7     	)..//CD*D1)-$G	
r$   c                     SS/nUnUR                  USUS S9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nrh   rd   r   r#   r  rs   r   Fr1   	r   r  r   existsr   ParquetFilerg  catsr$  r   r  r-   ro   r  rP   r   actual_partition_colss           r"   r  4TestParquetFastParquet.test_partition_cols_supported  s|     %
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r$   c                     SnUnUR                  USUS S9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nrh   r   r  r   Fr0   r  r  s           r"   r  1TestParquetFastParquet.test_partition_cols_string  sx    
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r$   c                     SS/nUnUR                  USS US9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nrh   rd   r   )r#   rs   partition_onr   Fr1   r  r  s           r"   test_partition_on_supported2TestParquetFastParquet.test_partition_on_supported  s|     %
 '	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r$   c           	          SS/nUnSn[         R                  " [        US9   UR                  USS UUS9  S S S 5        g ! , (       d  f       g = f)Nrh   rd   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r#   rs   r  r  )r'   r   r   r   )r   r  r-   ro   r  rP   r   s          r"   3test_error_on_using_partition_cols_and_partition_onJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_on  sX     !%  	 ]]:S1MM$ +-   211s	   ?
Azfastparquet writes into Indexc                 b    [         R                  " 5       nUR                  5       n[        X!US9  g )Nr  )r7   r8   r&  r   rw  s       r"   r  +TestParquetFastParquet.test_empty_dataframe  s$     \\^779(3r$   z2022.12zCfastparquet bug, see https://github.com/dask/fastparquet/issues/929c                     SU/-  n[         R                  " USU0S9nUR                  5       nSUR                  l        [        XAUS9  g )Nr  r  r  r
  r  )r7   r8   r&  r
  r  r   )r   r-   rq   r  rP   r   s         r"   r   0TestParquetFastParquet.test_timezone_aware_index  sH    
 +,,\\>3*?@779%(3r$   c           	         [         R                  " SSS/05      n[        R                  " 5        nUR	                  U5        [
        R                  " [        SS9   [        R                  " [        5         [        USSS9  S S S 5        S S S 5        [
        R                  " [        SS9   [        USS	S
9  S S S 5        S S S 5        g ! , (       d  f       NL= f! , (       d  f       NU= f! , (       d  f       N9= f! , (       d  f       g = f)NrF   r0   r1   z!not supported for the fastparquetr   r   T)r#   use_nullable_dtypesr   rd  )r7   r8   rz   r   r   r'   r   r   r   r   r   )r   r-   rP   r   s       r"   &test_use_nullable_dtypes_not_supported=TestParquetFastParquet.test_use_nullable_dtypes_not_supported*  s    \\3A-(__$MM$z1TU//> mQUV ? V z1TUT-yQ V  ?> VU VU sS   +C;C6CC
!C;+C*7C;
CC
C'	#C;*
C8	4C;;
D	c                 n   [         R                  " S5       n[        R                  " U5      R	                  S5        [
        R                  " [        SS9   [        USS9  S S S 5        [        R                  " U5      R                  SS9  S S S 5        g ! , (       d  f       N:= f! , (       d  f       g = f)	Ntest.parquets   breakit r   r   r   F)
missing_ok)
rz   r   rh  ri  write_bytesr'   r   	Exceptionr   unlink)r   r   s     r"   $test_close_file_handle_on_read_error;TestParquetFastParquet.test_close_file_handle_on_read_error5  sx    __^,LL**:6y3T-8 4 LL%%%7 -,33 -,s#   ?B&B!+B&
B#	B&&
B4c                 d   [         R                  " SS/SS/S.S9n[        R                  " S5       n[	        UR                  5       S5       nUR                  U5        S S S 5        [        X1S9nS S S 5        [        R                  " WU5        g ! , (       d  f       N7= f! , (       d  f       N7= f)Nr   r0   r4   rO  r  wbr   )	r7   r8   rz   r   r   encoder   r   r{   )r   r#   rP   r   rJ   r   s         r"   test_bytes_file_name+TestParquetFastParquet.test_bytes_file_name=  s    \\aV1a&9:__^,dkkmT*aa  + "$6F	 -
 	fb)	 +* -,s#   B!BB!
B	B!!
B/c                 p   [         R                  " S5        [        R                  " SS/SS/S.S9n[        R
                  " 5        n[         R                  " [        SS9   UR                  USSS	9  S S S 5        S S S 5        [        R
                  " 5        n[        R                  " U5      R                  S
5        [         R                  " [        SS9   [        USSS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr   r   r0   r4   rO  zfilesystem is not implementedr   r3   r#   r  rU   )r'   r   r7   r8   rz   r   r   rF  r   rh  ri  r  r   r   rP   r   s      r"   test_filesystem_notimplemented5TestParquetFastParquet.test_filesystem_notimplementedG  s    M*\\aV1a&9:__$#+J d=UK  __$LL**62#+J T-EJ     H   D!C43D?D'D#D'4
D	>D
D
D$	 D''
D5c                 p   [         R                  " S5        [        R                  " SS/SS/S.S9n[        R
                  " 5        n[         R                  " [        SS9   UR                  USSS	9  S S S 5        S S S 5        [        R
                  " 5        n[        R                  " U5      R                  S
5        [         R                  " [        SS9   [        USSS	9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nr   r   r0   r4   rO  z1filesystem must be a pyarrow or fsspec FileSystemr   r3   r  rU   )r'   r   r7   r8   rz   r   r   r   r   rh  ri  r  r   r  s      r"   test_invalid_filesystem.TestParquetFastParquet.test_invalid_filesystemW  s    I&\\aV1a&9:__$"U d9G  __$LL**62"U T)F     r  c           	         [         R                  " S5      n[        R                  " SS/SS/S.S9n[        R
                  " 5        n[         R                  " [        SS9   UR                  USUR                  5       S	S
0S9  S S S 5        S S S 5        [        R
                  " 5        n[        R                  " U5      R                  S5        [         R                  " [        SS9   [        USUR                  5       S	S
0S9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N9= f! , (       d  f       g = f)Nz
pyarrow.fsr   r0   r4   rO  z8storage_options not supported with a pyarrow FileSystem.r   r   r3   rX   )r#   r  r  rU   )r'   r   r7   r8   rz   r   r   rF  r   LocalFileSystemrh  ri  r  r   )r   pa_fsrP   r   s       r"   .test_unsupported_pa_filesystem_storage_optionsETestParquetFastParquet.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		     sH   D'!#DD')?E	(D8E	
D$	 D''
D58
E	E		
Ec           	      Z   Sn[         R                  " S[        [        SS5      5      05      n[        R
                  " S5       nUR                  U5        [        R                  " [        US9   [        USS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rd   r0   r<   ztmp.parquetr   numpy)re  )r7   r8   rK   rL   rz   r   r   r'   r   r   r   )r   r#   r   rP   r   s        r"   test_invalid_dtype_backend1TestParquetFastParquet.test_invalid_dtype_backend  s{    % 	 \\5$uQ{"345__]+tMM$z5T9 6 ,+55 ,+s$   +B/B:B
B	B
B*c                     [         R                  " [         R                  " / SQSS9S9n[         R                  " [         R                  " / SQSS9S9n[        X!US9  g )Nr   rJ  r@  r5  r  rK  rw  s       r"   rL  )TestParquetFastParquet.test_empty_columns  s@     \\} MN<<bhh]&ST(3r$   r)   N)&r   r   r   r   r  rq  r  r'   r   rl  r   rM   r   rx  r  r  r%  r   r  r  r  r  r  rf  r   r  r,   r   r   r  r  r  r  r  r  r  rL  r   r)   r$   r"   rk  rk    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$   rk  )	NNNNNTFTr1   )I__doc__ri   decimalr   r   r   r  rh  r  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   rf  r#   r*   r-   r9   rQ   ro   nowr  r  minmaxstrptimerq   r   r   r   r   r   r   r   r   r   r   r   r   r   r|  rk  r)   r$   r"   <module>r     s=       	    . - -    ' 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  %K/  K,+K,/K;:K;