
    4i#                        S r SSKrSSKJr  SSKJr  SSKrSSKrSSKr	SSK
r
SSKJr  SSKJr  SSKJrJrJrJr  SSKrSSKJr  SSKJr  SS	KJrJrJrJrJ r    SSK!r!S
r" SSK$r$S
r%\
RL                  RO                  S5      \
RL                  RO                  S5      /r(\
RR                  " \
RT                  " S\
RL                  RW                  \%(       + SS9\
RL                  RY                  \" 5       SSS9/S9\
RT                  " S\
RL                  RW                  \"(       + SS9S9/S9S 5       r-\
RR                  S 5       r.\
RR                  S 5       r/\
RR                  S 5       r0\
RR                  S 5       r1\
RR                  S 5       r2\
RR                  " \R                  Rg                  \Rh                  5      \R                  Rg                  \Rj                  Rl                  5      \R                  Rg                  \Rj                  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         S5S# jr:S$ r;S% r<S& r=S' r>S( r?S) r@S* rAS+ rBS, rC " S- S.5      rD " S/ S0\D5      rE " S1 S2\D5      rF " S3 S4\D5      rGg! \# a    Sr" GNf = f! \# a    Sr% GNf = f)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                     U R                   $ Nparamrequests    ^/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/tests/io/test_parquet.pyenginer$   :   s    2 ==    c                  F    [         (       d  [        R                  " S5        g)Nr   r   )_HAVE_PYARROWpytestskip r%   r#   par+   V   s    =./r%   c                     [         (       d  [        R                  " S5        [        5       (       a-  U R	                  [        R
                  R                  SSS95        g)Nr   r   Fr   r   )_HAVE_FASTPARQUETr(   r)   r   applymarkermarkxfailr!   s    r#   fpr1   ]   sI    23KK%EeT	
 r%   c                  b    [         R                  " / SQSS.[         R                  " SS/5      S9$ )N         fooABr9   r:   columns)pd	DataFrameIndexr*   r%   r#   	df_compatr@   h   s%    <<ie4bhhSz>RSSr%   c                      [         R                  " [        S5      [        [        SS5      5      [        R
                  " SSSS9/ SQ[         R                  " S	S
S9S.5      n U $ )Nabcr4            @      @float64dtypeTFT20130101r6   periods)abdef)r=   r>   listrangenparange
date_range)dfs    r#   df_cross_compatrX   m   sR    	eeAqk"395$z15
	

B Ir%   c                     [         R                  " [        S5      S[        R                  S// SQ/ SQ/ SQ[        [        SS5      5      [        R                  " S	S
5      R                  S5      [        R                  " SSSS9S[        R                  S// SQ[         R                  " SS	SS9[         R                  " S5      [         R                  [         R                  " S5      /S.5      $ )NrB   rM   crM   NrZ   )   foo   bars   bazr7   barbazr4   rC   r6      u1rD   rE   rF   rG          @      @rI   rJ   nsrL   unit20130103)stringstring_with_nanstring_with_nonebytesunicodeintuintfloatfloat_with_nanbooldatetimedatetime_with_nat)r=   r>   rR   rT   nanrS   rU   astyperV   	TimestampNaTr*   r%   r#   df_fullry      s    <<5k #RVVS1 0-,a$IIaO**40YYsCy9"BFFC0'j!$GZ(Z("	
 r%   z2019-01-04T16:41:24+0200z%Y-%m-%dT%H:%M:%S%zz2019-01-04T16:41:24+0215z2019-01-04T16:41:24-0200z2019-01-04T16:41:24-0215c                     U R                   $ r   r   r!   s    r#   timezone_aware_date_listr{      s     ==r%   c                 
  ^ ^^^^^^^	 [        U[        R                  5      (       d  [        S5      eT=(       d    SS0mT=(       d    0 mTc  T mU(       a
  UTS'   UTS'   U	UUU UUUU4S jnTc  UmU" U
5        gU" U
5        g)a  Verify parquet serializer and deserializer produce the same results.

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

Parameters
----------
df: Dataframe
engine: str, optional
    'pyarrow' or 'fastparquet'
path: str, optional
write_kwargs: dict of str:str, optional
read_kwargs: dict of str:str, optional
expected: DataFrame, optional
    Expected deserialization result, otherwise will be equal to `df`
check_names: list of str, optional
    Closed set of column names to be compared
check_like: bool, optional
    If True, ignore the order of index & columns.
repeat: int, optional
    How many times to repeat the test
z temp_file must be a pathlib.PathcompressionNr$   c           	         > [        U 5       HO  nTR                  " T40 T
D6  [        T40 T	D6nST;   a  S TR                  S'   [        R
                  " TUTTTS9  MQ     g )Nrj   r4   rj   )check_names
check_likecheck_dtype)rS   r   r   loctmassert_frame_equal)repeat_actualr   r   r   rW   expectedpathread_kwargswrite_kwargss      r#   compare!check_round_trip.<locals>.compare   se    vAMM$/,/!$6+6F H,5912!!'%' r%   )
isinstancepathlibPath
ValueError)rW   	temp_filer$   r   r   r   r   r   r   r   r   r   s   `  ```````  r#   check_round_tripr      s    F i..;<<8M4#8L#K!'X &H  |r%   c                 |    SSK Jn  UR                  U SS9nUR                  R                  R                  U:X  d   eg)zCheck partitions of a parquet file are as expected.

Parameters
----------
path: str
    Path of the dataset.
expected: iterable of str
    Expected partition names.
r   Nhive)partitioning)pyarrow.datasetdatasetr   schemanames)r   r   dsr   s       r#   check_partition_namesr      s9     !jjFj3G&&,,888r%   c                     Sn[         R                  " [        US9   [        XSS5        S S S 5        g ! , (       d  f       g = f)Nz.engine must be one of 'pyarrow', 'fastparquet'matchr7   r_   )r(   raisesr   r   )r@   r   msgs      r#   test_invalid_enginer      s-    
:C	z	-ue< 
.	-	-s	   3
Ac                     U(       a+  [         (       d   U R                  R                  S5      U l        [        R                  " SS5         [        X5        S S S 5        g ! , (       d  f       g = f)Nstrio.parquet.enginer   )r	   r<   rv   r=   option_contextr   )r@   r+   using_infer_stringr   s       r#   test_options_pyr     sI    "6"6%--44U;				.		:. 
;	:	:s   
A
A-c                 |    [         R                  " SS5         [        X5        S S S 5        g ! , (       d  f       g = f)Nr   r   r=   r   r   )r@   r1   r   s      r#   test_options_fpr   
  s)     
		.	>. 
?	>	>   -
;c                 |    [         R                  " SS5         [        X5        S S S 5        g ! , (       d  f       g = f)Nr   autor   )r@   r1   r+   r   s       r#   test_options_autor     s)     
		.	7. 
8	7	7r   c                    [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        [        R
                  " SS5         [        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e[        [        S5      [        5      (       d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   r   )r   r   r   r   r=   r   )r1   r+   s     r#   test_options_get_enginer     sn   j+[9999j/AAAA			.		:*V,k::::*Y/====*]3_EEEE 
;
 
		.	>*V,o>>>>*Y/====*]3_EEEE 
?
 
		.	7*V,k::::*Y/====*]3_EEEE 
8	7 
;	:
 
?	>
 
8	7s'   A!GA!GA!G(
G
G%(
G6c                     SSK Jn   U R                  S5      nU R                  S5      n[        (       d  SO$[	        [
        R                  5      [	        U5      :  n[        (       d  SO$[	        [        R                  5      [	        U5      :  n[        =(       a    U(       + n[        =(       a    U(       + nU(       d  U(       d  U(       a4  SU S3n[        R                  " [        US9   [        S	5        S S S 5        O/S
n[        R                  " [        US9   [        S	5        S S S 5        U(       a4  SU S3n[        R                  " [        US9   [        S	5        S S S 5        g Sn[        R                  " [        US9   [        S	5        S S S 5        g g g ! , (       d  f       N{= f! , (       d  f       N= f! , (       d  f       g = f! , (       d  f       g = f)Nr   )VERSIONSr   r   FzPandas requires version .z. or newer of .pyarrow.r   r   z6Unable to find a usable engine; tried using: 'pyarrow'z. or newer of .fastparquet.z3Use pip or conda to install the fastparquet package)pandas.compat._optionalr   getr'   r   r   __version__r-   r   r(   r   ImportErrorr   )r   
pa_min_ver
fp_min_verhave_pa_bad_versionhave_fp_bad_versionhave_usable_pahave_usable_fpr   s           r#   "test_get_engine_auto_error_messager   ,  sq    1 i(Jm,J } 	W(()GJ,??  !  	[,,-
0CC  #>+>'>N&B/B+BN./
|;RSE{%86" 98 ME{%86" 9 /
|;VWE{%86" 98 JE{%86" 98# #1> 98 98
 98 98s0   )FF+F<G
F(+
F9<
G

Gc                     U nUR                  X1S S9  [        X2S9n[        R                  " XT5        [        X2SS/S9n[        R                  " XTSS/   5        g N)r$   r}   r$   rM   rO   )r$   r<   r   r   r   r   rX   r+   r1   r   rW   results         r#   test_cross_engine_pa_fpr   W  sW     
BMM)DM9)/F&%)c
CF&c3Z.1r%   c                     U nUR                  X2S S9  [        X1S9n[        R                  " XT5        [        X1SS/S9n[        R                  " XTSS/   5        g r   r   r   s         r#   test_cross_engine_fp_par   d  sU    	BMM)DM9)/F&%)c
CF&c3Z.1r%   c                        \ rS rSrS rS rSrg)Baseiq  c                 v    [         R                  " X4S9   [        XUS S9  S S S 5        g ! , (       d  f       g = f)Nr   r}   )r(   r   r   )selfrW   r$   excerr_msgtemp_file_paths         r#   check_error_on_writeBase.check_error_on_writer  s&    ]]3.r6tD /..s   *
8c                 z    [         R                  " U5         [        XUS S9  S S S 5        g ! , (       d  f       g = f)Nr   )r   external_error_raisedr   )r   rW   r$   r   r   s        r#   check_external_error_on_write"Base.check_external_error_on_writew  s(    %%c*r6tD +**s   ,
:r*   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__r*   r%   r#   r   r   q  s    E
Er%   r   c                   b   \ rS rSrS rS r\R                  R                  S/ SQ5      S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       r\R                  R.                  \R                  R0                  S 5       5       rSrg)	TestBasici}  c                     [         R                  " / SQ5      SS[         R                  " S5      [        R                  " / SQ5      4 H  nSnU R                  X1[        XB5        M     g )Nr3   r4   r7   rJ   z+to_parquet only supports IO with DataFrames)r=   Seriesrw   rT   arrayr   r   )r   r$   r   objr   s        r#   
test_errorTestBasic.test_error~  sR    IIi LL$HHY
C @C%%c:sN
r%   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      nSS/Ul        [        X2U5        g )NrB   r4   rC   ri   rn   r7   r_   r=   r>   rR   rS   r<   r   )r   r$   r   rW   s       r#   test_columns_dtypesTestBasic.test_columns_dtypes  s;    \\T%[eAqk9JKL U^
/r%   r}   )Ngzipsnappybrotlic                 R    [         R                  " S/ SQ05      n[        XCUSU0S9  g )Nr9   r3   r}   r   r=   r>   r   )r   r$   r}   r   rW   s        r#   test_compressionTestBasic.test_compression  s)    \\3	*+60L	
r%   c           	          [         R                  " [        S5      [        [        SS5      5      S.5      n[         R                  " S[        S5      05      n[	        UUUUSS/0S9  g )NrB   r4   rC   r   ri   r<   r   r   r=   r>   rR   rS   r   )r   r$   r   rW   r   s        r#   test_read_columnsTestBasic.test_read_columns  sY    \\T%[eAqk9JKL<<4; 78"XJ/	
r%   c           
          [         R                  " [        [        S5      5      [        S5      S.5      n[         R                  " SSS/05      n[	        UUUUSS/0S	/S/S
.SS9  g )NrC   aabb)rn   partrn   r   r4   partition_colsr   )r   ==rM   )filtersr<   )r   r   r   r   r   )r   r$   tmp_pathrW   r   s        r#   test_read_filtersTestBasic.test_read_filters  sm    \\E!H~V
 <<A0*VH5%8$9ugN	
r%   c                    [         R                  " S5        [        R                  " S/ SQ05      n[	        X!S5        / SQ[        R
                  " SSSS9[        S	5      / S
Q/nU HT  nXBl        [        U[        R                  5      (       a   UR                  R                  S 5      Ul        [	        X!S5        MV     / SQUl        SUR                  l        [	        X!S5        g )Nr   r9   r3   )r5   r6   rC   rJ   r6   re   rf   rB   )r4   r6   rC   )r   r4   r5   r7   )r(   importorskipr=   r>   r   rV   rR   indexr   DatetimeIndex
_with_freqname)r   r   rW   indexesr  s        r#   test_write_indexTestBasic.test_write_index  s    I&\\3	*+	2 MM*ad;K	
 EH%!1!12288..t4RI6	  	2r%   c                     Un[         R                  " S/ SQ05      n[         R                  R                  / SQ5      nXTl        [        XBU5        g )Nr9   r3   )rM   r4   )rM   r5   )rN   r4   )r=   r>   
MultiIndexfrom_tuplesr  r   )r   r+   r   r$   rW   r  s         r#   test_write_multiindexTestBasic.test_write_multiindex  s>    \\3	*+))*HI/r%   c           
         Un[         R                  " SSSSS9n[         R                  " [        R                  R                  S5      R                  S[        U5      -  S45      [        S5      S	9n[         R                  R                  S
S/U/SS/S9nUR                  S S9nXg4 H+  nXl        [        XRU5        [        UUUSSS/0USS/   S9  M-     g )Nz01-Jan-2018z01-Dec-2018MSre   )freqrg   r5   r6   ABCr;   Level1Level2leveldater   r<   r9   r:   r   r   )r=   rV   r>   rT   randomdefault_rngstandard_normallenrR   r
  from_productcopyr  r   )	r   r+   r   r$   datesrW   index1index2r  s	            r#   test_multiindex_with_columns&TestBasic.test_multiindex_with_columns  s    m]DQ\\II!!!$44a#e*na5HIK
 ++!5)'61B , 
 4(%EHRF3&c
3S#J	 &r%   c                    [         R                  " / SQ/ SQS.5      nS SS.nUR                  SS9n[        X2XUS9  [         R                  " / SQ/ SQS./ S	QS
9n[        X2XUS9  / SQ/ SQ/n[         R                  " [	        [        S5      5      [        S5       Vs/ s H  ow* PM     snS.US
9nUR                  SS9n[        X2XUS9  g s  snf )Nr3   )qrs)rM   rN   F)r}   r  T)dropr   r   )zyxwvutsrr  r_   r_   r`   r`   r7   r7   quxr.  onetwor0  r1  r0  r1  r0  r1     )r0  r1  )r=   r>   reset_indexr   rR   rS   )r   r$   r   rW   r   r   arraysis           r#   test_write_ignoring_index#TestBasic.test_write_ignoring_index  s     \\	@A'+e< >>t>,6x	

 \\/2:O
 	6x	
 ED
 \\qNa+A1B+AB&
 >>t>,6x	
	 ,Bs   C
c                 ,   [         R                  R                  / SQ5      n[         R                  " [        R
                  R                  S5      R                  S5      US9nUS:X  a  U R                  XA[        SU5        g US:X  a  [        XBU5        g g )Nr	  r5   )rC   r6   r;   r   Column name must be a stringr   )r=   r
  r  r>   rT   r  r  r  r   	TypeErrorr   )r   r$   r   
mi_columnsrW   s        r#   test_write_column_multiindex&TestBasic.test_write_column_multiindex  s    ]]../MN
\\II!!!$44V<j
 ]"%%I'Ey y RF3 !r%   c                     / SQ/ SQ/n[         R                  " [        R                  R	                  S5      R                  S5      US9nSS/UR                  l        US:X  a  U R                  XA[        S	U5        g US
:X  a  [        XBU5        g g )Nr-  )r4   r5   r4   r5   r4   r5   r4   r5   r5   r2  r2  r;   r  r  r   zColumn namer   )r=   r>   rT   r  r  r  r<   r   r   r   r   r   r$   r   r4  rW   s        r#   &test_write_column_multiindex_nonstring0TestBasic.test_write_column_multiindex_nonstring"  s    
 E$
 \\II!!!$44V<f
 %h/

]"%%b*mYWy RF3 !r%   c                     Un/ SQ/ SQ/n[         R                  " [        R                  R	                  S5      R                  S5      US9nSS/UR                  l        [        XRU5        g )Nr-  r/  r5   r?  r;   	ColLevel1	ColLevel2)	r=   r>   rT   r  r  r  r<   r   r   r   r+   r   r$   r4  rW   s         r#   #test_write_column_multiindex_string-TestBasic.test_write_column_multiindex_string3  se      ED
 \\II!!!$44V<f
 (5

/r%   c                     Un/ SQn[         R                  " [        R                  R	                  S5      R                  S5      US9nSUR                  l        [        XRU5        g )N)r_   r`   r7   r.  r5   r2  rC   r;   	StringCol)	r=   r>   rT   r  r  r  r<   r  r   rF  s         r#   test_write_column_index_string(TestBasic.test_write_column_index_stringD  sT      .\\II!!!$44V<f
 &

/r%   c                    / SQn[         R                  " [        R                  R	                  S5      R                  S5      US9nSUR                  l        US:X  a  U R                  XA[        SU5        g [        XBU5        g )Nr4   r5   r6   rC   r5   rJ  r;   NonStringColr   r9  )r=   r>   rT   r  r  r  r<   r  r   r:  r   r@  s        r#   !test_write_column_index_nonstring+TestBasic.test_write_column_index_nonstringR  so     \\II!!!$44V<f
 )

]"%%I'Ey RF3r%   c                    [         R                  " S5      nUS:X  a.  [         R                  R                  SS9nUR	                  U5        [
        R                  " [
        R                  " / SQS5      [
        R                  " / SQS5      [
        R                  " / SQ5      [
        R                  " / S	Q5      [
        R                  " / S
QS5      [
        R                  " / SQS5      [
        R                  " / SQS5      S.5      nUR                  Xc5        [        X1S9n[        X1SS9nUS   R                  [        R                  " S5      :X  d   e[        R                  " [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / S	QSS9[        R                  " / S
QSS9[        R                  " / SQSS9[        R                  " / SQSS9S.5      n	US:X  a   UR                  SSS9nU	R                  SSS9n	[        R                   " X5        g )Npyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r4   r5   r6   Nint64uint8)rM   rN   rZ   N)TFTNrO  )      ?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/   rc  result1result2r   s
             r#   test_dtype_backendTestBasic.test_dtype_backendb  s     !23]" ;;$$G % D %]]?G<]]?G<]]#89]]#<=]]<9]]#8)D]]#8)D

 	u(y8yGWXs|!!RXXi%8888<<XXoW=XXoW=XX38DXX7yIXXl':XX39EXX39E

 ]" ll3Ql/G}}Sq}1H
g0r%   rH   )	r]  r^  r_  objectzdatetime64[ns, UTC]rp   z	period[D]ra  ri   c                    [         R                  " S[         R                  " / US905      n[        R                  " SS5        S nUS:X  a+  [         R                  " S[         R                  " / SS905      n[        UUUSS0US	9  g )
NvaluerG   r   11.0.0rp   ra  r\  r[  r  )r=   r>   r   r(   r   r   )r   r+   rH   r   rW   r   s         r#   test_read_empty_arrayTestBasic.test_read_empty_array  s      \\"E2

 	Ix0G||RXXb	:H
 	(*:;	
r%   c                    US:w  a  [         R                  " U5        [        U" SSSS5      SS9 nUR                  UR	                  5       S9  [        UR                  US	9nS S S 5        Un[        (       a$  UR                  R                  [        5      Ul        [        R                  " WU5        g ! , (       d  f       NW= f)
Nr   iodataparquetzsimple.parquetrb)mode)contentr   )r(   r   openserve_contentreadr   urlr	   r<   rv   rj  r   r   )r   
httpserverdatapathr@   r$   rQ   rW   r   s           r#   test_parquet_read_from_url$TestBasic.test_parquet_read_from_url  s     V'(44DEDQUV$$QVVX$6jnnV<B R '//66v>H
b(+ RQs   2B33
Cr*   N)r   r   r   r   r   r   r(   r/   parametrizer   r   r   r  r  r!  r6  r<  rA  rG  rL  rQ  rh  rn  network
single_cpur}  r   r*   r%   r#   r   r   }  s    	O0 [[],NO
 P


&3.0.$
L44"0"04 .1` [[
	


0 [[[[
,  
,r%   r   c                   ^   \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  \" 5       S	S
9\R                  R                  \(       + SS
9\R                  R#                  S\\R(                  /5      S 5       5       5       rS r\R                  R.                  S 5       r\R                  R.                  S 5       r\R                  R.                  \R                  R#                  SS// /5      S 5       5       rS rS rS rS r\R                  R#                  S\S /SS/S9S 5       rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'\R                  RQ                  S%5      S& 5       r)S' r*\R                  R#                  S(S)S*/\RV                  " S+S,/\R                  R                  \,\-S-S.9S/9\RV                  " \.R\                  " S0S*S*S)S)5      \.R\                  " S0S*S*S*S*5      /\R                  R                  \/S1S
9S/9/5      S2 5       r0S3 r1S4 r2S5 r3S6 r4S7 r5S8 r6S9 r7S:r8g;)<TestParquetPyArrowi  c                     Un[         R                  " SS5        [        R                  " SSSS9nUR	                  S 5      nXTS'   / SQUS	'   [        XCU5        g )
Nr   rm  rJ   r6   Europe/BrusselsrL   tzdatetime_tzTNTbool_with_none)r(   r   r=   rV   r  r   )r   r+   ry   r   rW   dtis         r#   
test_basicTestParquetPyArrow.test_basic  sW    Ix0 mmJ6GHnnT"=1+r%   c           	      f    Un[         R                  " SSSS9US'   [        UUUUSS/   SSS/0S	9  g )
NrJ   r6   r  r  r  ri   rn   r<   r   )r=   rV   r   )r   r+   ry   r   rW   s        r#   test_basic_subset_columns,TestParquetPyArrow.test_basic_subset_columns  sL     MM*aDUV=5)*"Xu$56	
r%   c                    UR                  US9n[        U[        5      (       d   e[        U5      n[	        U5      nUR                  5       nS UR                  S'   US   R                  S5      US'   [        R                  " XV5        g )Nr   r   rt   zM8[us])
r   r   rl   r   r   r  r   rv   r   r   )r   r+   ry   	buf_bytes
buf_streamresr   s          r#   *test_to_bytes_without_path_or_buf_provided=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  s    &&b&1	)U++++Y'
:&<<>-1)*(01D(E(L(LX(V$%
c,r%   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nU R                  X1[        SU5        g )N   rC   r6   aaar;   zDuplicate column names found	r=   r>   rT   rU   reshaperR   r  r   r   r   r+   r   rW   s       r#   test_duplicate_columns)TestParquetPyArrow.test_duplicate_columns  sL    \\"))B-//15tE{KPPR!!J >		
r%   c                 r    [         R                  " S[         R                  " SSS905      n[        X2U5        g )NrM   1 dayr6   rK   )r=   r>   timedelta_ranger   r  s       r#   test_timedelta!TestParquetPyArrow.test_timedelta  s,    \\3 2 27A FGH+r%   c                 z    [         R                  " S/ SQ05      nU R                  X1[        R                  U5        g )NrM   rM   r4   rc   )r=   r>   r   r   ArrowExceptionr  s       r#   test_unsupported#TestParquetPyArrow.test_unsupported  s/    \\3./ 	**273I3I9Ur%   c                     [         R                  " SS[         R                  S9n[        R                  " US/S9n[
        (       a"  U R                  XA[        R                  U5        g [        XBU5        g )Nr5   
   rG   fp16rr  r<   )
rT   rU   float16r=   r>   r   r   r   r  r   )r   r+   r   rr  rW   s        r#   test_unsupported_float16+TestParquetPyArrow.test_unsupported_float16  sY     yyBbjj1\\tfX6....	 RB/r%   zqPyArrow does not cleanup of partial files dumps when unsupported dtypes are passed to_parquet function in windowsr   zfloat16 works on 15	path_typec                 n   [         R                  " SS[         R                  S9n[        R                  " US/S9nU" U5      n[
        R                  " [        R                  5         UR                  XaS9  S S S 5        [        R                  R                  U5      (       a   eg ! , (       d  f       N5= f)Nr5   r  rG   r  r  )r   r$   )rT   rU   r  r=   r>   r   r   r   r  r   osr   isfile)r   r+   r  r   rr  rW   r   s          r#    test_unsupported_float16_cleanup3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yyBbjj1\\tfX6#%%g&<&<=MMtM/ >77>>$''''' >=s   'B&&
B4c           
         [         R                  " [         R                  " [        S5      5      [         R                  " / SQ[         R                  " / SQ5      S9[         R                  " / SQ/ SQSS9S	.5      n[        X2U5        g )
Nabcdef)r_   r7   r7   r_   Nr_   r^   rG   )NrN   rZ   NrZ   rN   )rN   rZ   rO   T)
categoriesorderedrM   rN   rZ   )r=   r>   CategoricalrR   CategoricalDtyper   r  s       r#   test_categorical#TestParquetPyArrow.test_categorical#  sf    \\^^DN3^^=--.CD
 ^^4. 
" 	+r%   c           	          [         R                  " S5      nUR                  " S0 UD6nSU0n[        UUUUR                   S3UUS9  g )Ns3fs
filesystem/pyarrow.parquetr   r   r   r*   )r(   r   S3FileSystemr   r  )	r   r@   s3_bucket_publics3sor+   r   r  s3kws	            r#   test_s3_roundtrip_explicit_fs0TestParquetPyArrow.test_s3_roundtrip_explicit_fs8  sZ     ""6*&&B$))**:;	
r%   c           	      D    SU0n[        UUUSUR                   S3UUS9  g )Nstorage_optionss3://r  r  r   r  )r   r@   r  r  r+   r   s         r#   test_s3_roundtrip$TestParquetPyArrow.test_s3_roundtripH  s:     "4()..//?@	
r%   partition_colr9   c                 <   [         R                  " S5        UR                  5       nU(       aJ  UR                  [        R                  U[        R                  5      5      nSnXt   R                  U5      Xt'   [        UUUUSUR                   S3SU0US US.SSS	9	  g )
Nr  categoryr  z/parquet_dirr  )r   r}   r  Tr4   )r   r   r   r   r   r   )
r(   r   r  rv   dictfromkeysrT   int32r   r  )	r   r@   r  r+   r  r  r   expected_dfpartition_col_types	            r#   test_s3_roundtrip_for_dir,TestParquetPyArrow.test_s3_roundtrip_for_dirU  s    
 	F#nn& %,,T]]="((-STK!+)4)C)J)J"*K& 	 )../|<*D1"/##'
 	
r%   c                    [         R                  " S5        [        5       nUR                  U5        [	        U5      nU(       a+  [
        (       d   UR                  R                  S5      Ul        [        R                  " X5        g )Nr   r   )
r(   r   r   r   r   r	   r<   rv   r   r   )r   r@   r   bufferdf_from_bufs        r#   test_read_file_like_obj_support2TestParquetPyArrow.test_read_file_like_obj_supportw  s_    I&V$"6*&:&: ) 1 1 8 8 ?I
i5r%   c                 |   [         R                  " S5        UR                  SS5        UR                  SS5        [         R                  " [        SS9   [        S5        S S S 5        [         R                  " [        SS9   UR                  S5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr   HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)r(   r   setenvr   OSErrorr   r   )r   r@   monkeypatchs      r#   test_expand_user#TestParquetPyArrow.test_expand_user  s    I&6=1=-8]]7*<=)* >]]7*<=  !12 >= >===s   BB-
B*-
B;c                     SS/nUnUR                  XS S9  [        X5        [        U5      R                  UR                  :X  d   eg )Nrr   rn   r   r}   r   r   r   shape)r   r   r+   ry   r   rW   s         r#   test_partition_cols_supported0TestParquetPyArrow.test_partition_cols_supported  sE     %
h4Ph7H%++rxx777r%   c                     SnU/nUnUR                  XS S9  [        X5        [        U5      R                  UR                  :X  d   eg )Nrr   r  r  )r   r   r+   ry   r   partition_cols_listrW   s          r#   test_partition_cols_string-TestParquetPyArrow.test_partition_cols_string  sJ    -.
h4Ph<H%++rxx777r%   c                     U $ r   r*   )xs    r#   <lambda>TestParquetPyArrow.<lambda>  s    Qr%   ri   zpathlib.Path)idsc                     SnU/nUnU" U5      nUR                  XS9  [        U5      R                  UR                  :X  d   eg )Nr:   )r   )r   r   r  )	r   r   r+   r@   r  r   r  rW   r   s	            r#   test_partition_cols_pathlib.TestParquetPyArrow.test_partition_cols_pathlib  sL     -."
d?D!''288333r%   c                 F    [         R                  " / / S9n[        X2U5        g )N)r  r<   r   r  s       r#   test_empty_dataframe'TestParquetPyArrow.test_empty_dataframe  s    \\B/+r%   c                     SS K n[        R                  " SSS/05      nUR                  " UR                  " SUR
                  " 5       S9/5      nUR                  [        5      n[        XBUSU0US9  g )Nr   r  r4   typer   r(  )	r   r=   r>   r   fieldbool_rv   rr   r   )r   r+   r   r   rW   r   out_dfs          r#   test_write_with_schema)TestParquetPyArrow.test_write_with_schema  s`    \\3A-(s!I JK42Xv,>	
r%   c           	         [         R                  " S5        [        R                  " [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " / SQSS9S.5      nU(       a'  [
        (       a  [        XCXR                  S	S
05      S9  O[        XCU5        [        R                  " S[        R                  " / SQSS905      n[        XCU5        g )Nr   r3   r]  rG   UInt32r[   ri   r  rZ   r   r   rM   rU  )r(   r   r=   r>   r   r	   r   rv   )r   r+   r   r   rW   s        r#    test_additional_extension_arrays3TestParquetPyArrow.test_additional_extension_arrays  s     	I&\\YYy8YYy9YY/x@
 "6"6RBC<9PQRB/\\3		/ IJK+r%   c                    [         R                  " S5        [        R                  " S[        R                  " / SQSS905      n[        R
                  " SU5         U(       aS  [        (       a  UR                  S5      nOUR                  SU S	35      nUR                  R                  S5      Ul        OUR                  SU S	35      n[        XTXS
9  S S S 5        g ! , (       d  f       g = f)Nr   rM   r[   string[pyarrow]rG   string_storager   zstring[]r  )
r(   r   r=   r>   r   r   r	   rv   r<   r   )r   r+   r  r   r   rW   r   s          r#    test_pyarrow_backed_string_array3TestParquetPyArrow.test_pyarrow_backed_string_array  s     	I&\\3		*:BS TUV/@!''!yy/H!yy7>2B!)DEH#+#3#3#:#:5#A 99w~.>a%@ARBB A@@s   A:C
C,c                 D   [         R                  " S5        [        R                  " [        R                  R                  / SQ5      [        R                  " SSSS9[        R                  R                  [        R                  " SSSS95      S.5      n[        X2U5        g )	Nr   ))r   r4   )r4   r5   )r6   rC   z
2012-01-01r6   D)rL   r  rC   )rZ   rO   rP   )
r(   r   r=   r>   IntervalIndexr  period_rangefrom_breaksrV   r   r  s       r#   test_additional_extension_types2TestParquetPyArrow.test_additional_extension_types  sz     	I&\\%%112JK__\13G%%11MM,D		
 	+r%   c           	      z    Sn[         R                  " S[         R                  " SSSS905      n[        XBUSU0S9  g )	Nz2.6rM   z
2017-01-011nsr  r  rL   versionr   )r=   r>   rV   r   )r   r+   r   verrW   s        r#   test_timestamp_nanoseconds-TestParquetPyArrow.test_timestamp_nanoseconds  s;     \\3lPR STU)S9IJr%   c                    SU/-  n[         R                  " USU0S9nUS S  nUR                  [        R                  :w  a   SS KnUR                  R                  R                  U5      nUR                  UR                  5       S-  5      n	UR                  R                  U	5      Ul        US   R                  R                  U	5      US'   [        XSUSUS9  g ! [         a     Nf = f)N   index_as_colr  rr  r   <   F)r   r   )r=   r>   tzinfors   UTCpytzr  r  	utcoffsetFixedOffsettotal_seconds
tz_convertdtr   r   )
r   r+   r{   r   idxrW   r   r&  offsetr  s
             r#   test_timezone_aware_index,TestParquetPyArrow.test_timezone_aware_index  s    +,,\\>3*?@ a5#**hll:V ../GH%%f&:&:&<r&AB!)!:!:2!>+3N+C+F+F+Q+QRT+U(Q  s   C 
C('C(c                     [         R                  " S5        [        R                  " S[	        [        S5      5      05      nUR                  X!S9  [        X!S/S9n[        U5      S:X  d   eg )Nr   rM   r6   r   rM   r   r   r   r4   )	r(   r   r=   r>   rR   rS   r   r   r  )r   r+   r   rW   r   s        r#   test_filter_row_groups)TestParquetPyArrow.test_filter_row_groups  sZ    I&\\3U1X/0
i+in5EF6{ar%   z2ignore:make_block is deprecated:DeprecationWarningc                 2   SS K nUn[        R                  " SSSSS9nUR                  S 5      nXeS'   / SQUS	'   UR                  R                  U5      nUR                  [        R                  S
9nUS   R                  S5      US'   [        UUUSS0US9  g )Nr   rJ   r6   r  re   )rL   r  rg   r  r  r  )types_mapperrt   ztimestamp[us][pyarrow]r\  r   r$   r   r   )
r   r=   rV   r  Tablefrom_pandas	to_pandas
ArrowDtyperv   r   )	r   r+   ry   r   r   rW   r  pa_tabler   s	            r#   &test_read_dtype_backend_pyarrow_config9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s     mmJ6GdSnnT"=1==,,R0%%2==%A(01D(E(L(L$)
$% 	()4	
r%   c                     [         R                  " SSS/0[         R                  " SS/SS9SS	9nUR                  5       nUR                  R                  S5      Ul        [        UUUS
S0US9  g )NrM   r4   r5   r6   rC   testr  zint64[pyarrow])r  rH   r\  r   r7  )r=   r>   r?   r  r  rv   r   )r   r+   r   rW   r   s        r#   ,test_read_dtype_backend_pyarrow_config_index?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_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           	          [         R                  " [        S5      [        [        SS5      5      S.5      nX$l        [        XCU5        g )NrB   r4   rC   r   r   )r   r+   r<   r   rW   s        r#   test_columns_dtypes_not_invalid2TestParquetPyArrow.test_columns_dtypes_not_invalid@  s5    2 \\T%[eAqk9JKL
+r%   c                 n    [         R                  " [         R                  " / SQSS9S9n[        X2U5        g )Nr  zcustom namerA  r,  )r=   r>   r?   r   r  s       r#   test_empty_columns%TestParquetPyArrow.test_empty_columns^  s%    \\} MN+r%   c                     [         R                  " SS/0S9nSS0Ul        UR                  XS9  [	        XS9nUR                  UR                  :X  d   eg )Nr4   rr  test_attributer   )r=   r>   attrsr   r   )r   r   r+   rW   new_dfs        r#   test_df_attrs_persistence,TestParquetPyArrow.test_df_attrs_persistencec  sP    \\A3x($a(
i+i3||rxx'''r%   c           
         [         R                  " SSS/0SS/S9nUR                  XS9  [         R                  " SS5         [	        XS9nS S S 5        [         R
                  " [        R                  S	9n[         R                  " SSS/0U[         R                  " SS/US
9[         R                  " S/[        (       a  U(       d  [        OUS
9S9n[        R                  " WU5        g ! , (       d  f       N= f)NrM   r  yrN   )rr  r  r   future.infer_stringTna_valuerG   )rr  rH   r  r<   )r=   r>   r   r   r   StringDtyperT   ru   r?   r	   rj  r   r   )r   r   r+   r   rW   r   rH   r   s           r#   test_string_inference(TestParquetPyArrow.test_string_inferencej  s    \\c3Z0c
C
i+4d;!)7F </<<Sz"((C:U3HH22;MFSX	

 	fh/ <;s   
C**
C8c           	      z   SS K n[        R                  " S[        S5      /0SS9nUR	                  XR                  SUR                  S5      4/5      S9  [        U5      n[        (       a  [        R                  " SS/0S	S9nO![        R                  " S[        S5      /0S
S9n[        R                  " XE5        g )Nr   rM   z123.00r  rG   r   )r   123ri   rj  )r   r=   r>   r   r   r   
decimal128r   r	   r   r   )r   r   r+   rW   r   r   s         r#   test_roundtrip_decimal)TestParquetPyArrow.test_roundtrip_decimal~  s    \\3!2 34<MN
i		Cq9I3J2K(LMi(||S5'N(CH||S78+<*=$>hOH
f/r%   c                 "   SS K nSS KJn  UR                  SUR	                  / SQUR                  5       5      05      nUR                  XA5        [        R                  " SS5         [        U5      nS S S 5        [        R                  " S/ SQ0[        R                  " [        R                  S9[        R                  " S/[        R                  " [        R                  S9S9S9n[        R                   " WU5        g ! , (       d  f       N= f)	Nr   rM   )NrN   rZ   rT  TrU  rG   )rr  rH   r<   )r   pyarrow.parquetrs  rc  r   large_stringrd  r=   r   r   r>   rW  rT   ru   r?   r   r   )r   r   r+   re  rc  r   r   s          r#   #test_infer_string_large_string_type6TestParquetPyArrow.test_infer_string_large_string_type  s    $#rxx(8"//:KLMN
u(4d;!),F <<<'(.."&&1HHcU".."&&*IJ

 	fh/ <;s   &D  
Dc                    [         R                  " SS5      n[         R                  " S5      nUR                  [        R                  " SSS5      /UR	                  S5      S9nUR                  U/S/S	9nUR                  XQ5        [        U5      n[        R                  " S[        R                  " SSS5      /0S
S9n[        R                  " Xg5        g )Nr   13.0.0rT  i@  r4   usr  	timestampr  zdatetime64[us])rr  rH   )r(   r   r   rs   rg  rc  rd  r   r=   r>   r   r   )r   r   r+   re  arrrc  r   r   s           r#   test_non_nanosecond_timestamps1TestParquetPyArrow.test_non_nanosecond_timestamps  s      H5  !23hh))$156R\\$=OhP#{m4
u(i(<< 1 1$1 =>?"
 	f/r%   c           	          [         R                  " SS5      nUR                  " SUR                  " UR                  " 5       UR
                  " 5       5      4/5      n[        R                  " SSS00SSS00/5      n[        UUUSU0S	S
S00S9  g )Nr   re  r7   r9   r4   r:   r5   r   to_pandas_kwargsmaps_as_pydictsr   )r   r   )	r(   r   r   map_ri   rV  r=   r>   r   )r   r+   r   r   r   rW   s         r#   test_maps_as_pydicts'TestParquetPyArrow.test_maps_as_pydicts  s    %%i:W\\'.."2GMMODEF
 \\EC8,usAh.?@A"F++.?-JK	
r%   r*   N)9r   r   r   r   r  r  r  r  r  r  r  r(   r/   r0   r   skipifr   r  r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r.  r3  filterwarningsr=  rB  r    r
   NotImplementedErrorrs   r   rF  rI  rP  rX  r]  rb  ri  ro  r   r*   r%   r#   r  r    s   
,
-
,V
0 [[?   [[009NO[[[3*=>
( ? P
(,* [[
 
 [[

 

 [[[[_ubk:
 ; 
@6388 [[c;'h-G  	4	4,

,&C", KR:  [[ TU
 V
2
 [[FLL kk''(.G (  LL%%dAq!Q7%%dAq!Q7 kk''(L ( 		
0,10,,
(0(00<0
r%   r  c                       \ rS rSrS rS rS rS rS rS r	S r
\R                  R                  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g)TestParquetFastParqueti  c                     [         R                  " S5      nUR                  S5      nUn[        R                  " SSUS9nUR                  S 5      nXS'   [        R                  " SSS9US	'   [        XtU5        g )
Nr&  z
US/EasternrJ   r6   r  r  r  rK   	timedelta)r(   r   timezoner=   rV   r  r  r   )	r   r1   ry   r"   r   r&  r  rW   r  s	            r#   r  !TestParquetFastParquet.test_basic  sm    ""6*]]<(mmJb9nnT"=,,Wa@;+r%   c           	         [         R                  " [        S5      [        [        SS5      5      S.5      n[        nSnSS/Ul        U R                  X1XEU5        SS/Ul        U R                  X1XEU5        [        R                  " S	SSSS5      [        R                  " S	SSSS5      /Ul        U R                  X1XEU5        g )
NrB   r4   rC   r   r9  r   r\   r]   rD  )r=   r>   rR   rS   r:  r<   r   rs   )r   r1   r   rW   errr   s         r#   test_columns_dtypes_invalid2TestParquetFastParquet.test_columns_dtypes_invalid  s    \\T%[eAqk9JKL, V
!!"#I> f%
!!"#I> dAq!Q/dAq!Q/

 	!!"#I>r%   c                     [         R                  " [        R                  " S5      R	                  SS5      [        S5      S9R                  5       nSnU R                  X1[        XB5        g )Nr  rC   r6   r  r;   z9Cannot create parquet dataset with duplicate column namesr  r   r1   r   rW   r   s        r#   r  -TestParquetFastParquet.test_duplicate_columns  sK    \\"))B-//15tE{KPPRI!!"*cEr%   c                     [         R                  " S/ SQ05      n[         R                  " SS[        R                  S/0SS9n[	        XCXSS9  g )	NrM   )TNFrX  g        r  rG   F)r   r   )r=   r>   rT   ru   r   )r   r1   r"   r   rW   r   s         r#   test_bool_with_none*TestParquetFastParquet.test_bool_with_none  sD    \\3 345<<sBFFC&8 9K 	5Qr%   c           	          [         R                  " S[         R                  " SSSS905      nU R                  X1[        S U5        [         R                  " S/ SQ05      nSnU R                  X1[        XB5        g )NrM   2013Mr6   r  r  z"Can't infer object conversion type)r=   r>   r  r   r   r  s        r#   r  'TestParquetFastParquet.test_unsupported  sb    \\3S! LMN!!"*dIF \\3./2!!"*cEr%   c                     [         R                  " S[         R                  " [        S5      5      05      n[	        X2U5        g )NrM   rB   )r=   r>   r  rR   r   )r   r1   r   rW   s       r#   r  'TestParquetFastParquet.test_categorical  s,    \\3tE{ ;<=+r%   c                     S[        [        S5      5      0n[        R                  " U5      nUR	                  X!S SS9  [        X!S/S9n[        U5      S:X  d   eg )NrM   r6   r4   )r$   r}   row_group_offsetsr1  r2  )rR   rS   r=   r>   r   r   r  )r   r1   r   rO   rW   r   s         r#   r3  -TestParquetFastParquet.test_filter_row_groups  sU    $uQx.!\\!_
iPQRin5EF6{ar%   c           
      F    [        UUUSUR                   S3SU0S US.S9  g )Nr  z/fastparquet.parquetr  )r}   r  r  r  )r   r@   r  r  r1   r   s         r#   r  (TestParquetFastParquet.test_s3_roundtrip  s:     	)..//CD*D1)-$G	
r%   c                     SS/nUnUR                  USUS S9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nrr   rn   r   r$   r   r}   r   Fr5   	r   r  r   existsr   ParquetFiler   catsr  r   r   r1   ry   r   rW   r   actual_partition_colss           r#   r  4TestParquetFastParquet.test_partition_cols_supported  s|     %
 )	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r%   c                     SnUnUR                  USUS S9  [        R                  R                  U5      (       d   eSS KnUR
                  " [        U5      S5      R                  n[        U5      S:X  d   eg )Nrr   r   r  r   Fr4   r  r  s           r#   r  1TestParquetFastParquet.test_partition_cols_string)  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 )Nrr   rn   r   )r$   r}   partition_onr   Fr5   r  r  s           r#   test_partition_on_supported2TestParquetFastParquet.test_partition_on_supported9  s|     %
 '	 	 	
 ww~~h'''' + 7 7Hu M R R()Q...r%   c           	          SS/nUnSn[         R                  " [        US9   UR                  USS UUS9  S S S 5        g ! , (       d  f       g = f)Nrr   rn   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r$   r}   r  r   )r(   r   r   r   )r   r   r1   ry   r   rW   r   s          r#   3test_error_on_using_partition_cols_and_partition_onJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onI  sX     !%  	 ]]:S1MM$ +-   211s	   ?
Ac                 b    [         R                  " 5       nUR                  5       n[        X2XS9  g )Nr  )r=   r>   r  r   )r   r1   r   rW   r   s        r#   r  +TestParquetFastParquet.test_empty_dataframe\  s"    \\^779>r%   c                     SU/-  n[         R                  " USU0S9nUR                  5       nSUR                  l        [        XdXS9  g )Nr   r!  r"  r  r  )r=   r>   r  r  r  r   )r   r1   r{   r"   r   r,  rW   r   s           r#   r.  0TestParquetFastParquet.test_timezone_aware_indexb  sH     +,,\\>3*?@779%>r%   c                    [         R                  " U5      R                  S5        [        R                  " [
        5         [        USS9  S S S 5        [         R                  " U5      R                  SS9  g ! , (       d  f       N2= f)Ns   breakitr   r   F)
missing_ok)r   r   write_bytesr   r   	Exceptionr   unlink)r   r   s     r#   $test_close_file_handle_on_read_error;TestParquetFastParquet.test_close_file_handle_on_read_errorm  s[    Y++J7%%i0=9 1 	Y&&%&8 10s    A77
Bc                     [         R                  " SS/SS/S.S9n[        US5       nUR                  U5        S S S 5        [	        X!S9n[
        R                  " XS5        g ! , (       d  f       N.= f)Nr   r4   r8   rL  wbr   )r=   r>   rw  r   r   r   r   )r   r$   r   rW   rQ   r   s         r#   test_bytes_file_name+TestParquetFastParquet.test_bytes_file_namet  s]    \\aV1a&9:)T"aMM! # i7
f)	 #"s   A""
A0c                    [         R                  " S5        [        R                  " SS/SS/S.S9n[         R                  " [
        SS9   UR                  USSS	9  S S S 5        [        R                  " U5      R                  S
5        [         R                  " [
        SS9   [        USSS	9  S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   r   r4   r8   rL  zfilesystem is not implementedr   r7   r$   r  r\   )r(   r   r=   r>   r   rs  r   r   r   r  r   r   r   rW   s      r#   test_filesystem_notimplemented5TestParquetFastParquet.test_filesystem_notimplemented}  s    M*\\aV1a&9:]].6UVMM)MeML W 	Y++F3]].6UV=UK WV	 WV WV   B8#C	8
C	
Cc                    [         R                  " S5        [        R                  " SS/SS/S.S9n[         R                  " [
        SS9   UR                  USSS	9  S S S 5        [        R                  " U5      R                  S
5        [         R                  " [
        SS9   [        USSS	9  S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   r   r4   r8   rL  z1filesystem must be a pyarrow or fsspec FileSystemr   r7   r  r\   )r(   r   r=   r>   r   r   r   r   r   r  r   r  s      r#   test_invalid_filesystem.TestParquetFastParquet.test_invalid_filesystem  s    I&\\aV1a&9:]]Q
 MM)I%MH

 	Y++F3]]Q
 9G
 

 

 
r  c                    [         R                  " S5      n[        R                  " SS/SS/S.S9n[         R                  " [
        SS9   UR                  USUR                  5       S	S
0S9  S S S 5        [        R                  " U5      R                  S5        [         R                  " [
        SS9   [        USUR                  5       S	S
0S9  S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)Nz
pyarrow.fsr   r4   r8   rL  z8storage_options not supported with a pyarrow FileSystem.r   r   r7   r_   )r$   r  r  r\   )r(   r   r=   r>   r   rs  r   LocalFileSystemr   r   r  r   )r   r   pa_fsrW   s       r#   .test_unsupported_pa_filesystem_storage_optionsETestParquetFastParquet.test_unsupported_pa_filesystem_storage_options  s    ##L1\\aV1a&9:]]L
 MM  002!&	  	
 	Y++F3]]L
   002!&		
 

 

 
s   #C4C+
C(+
C9c           	          Sn[         R                  " S[        [        SS5      5      05      nUR	                  U5        [
        R                  " [        US9   [        USS9  S S S 5        g ! , (       d  f       g = f)NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rn   r4   rC   r   numpy)r\  )	r=   r>   rR   rS   r   r(   r   r   r   )r   r$   r   r   rW   s        r#   test_invalid_dtype_backend1TestParquetFastParquet.test_invalid_dtype_backend  s\    % 	 \\5$uQ{"345
i ]]:S1': 211s   A,,
A:r*   N)r   r   r   r   r  r|  r  r  r  r  r3  r(   r/   r  r  r  r  r  r  r  r.  r  r  r  r  r  r  r   r*   r%   r#   ru  ru    s    
,?*FR	F,  [[	
 	
/ / / &?	?9*LH6;r%   ru  )	NNNNNTFTr5   )H__doc__rs   decimalr   rq  r   r  r   r  rT   r(   pandas._configr   pandas.compatr   pandas.compat.pyarrowr   r   r	   r
   pandasr=   pandas._testing_testingr   pandas.util.versionr   pandas.io.parquetr   r   r   r   r   r   r'   r   r   r-   r/   rr  
pytestmarkfixturer    rq  r0   r$   r+   r1   r@   rX   ry   nowr%  rx  minmaxstrptimer{   r   r   r   r   r   r   r   r   r   r   r   r   r  ru  r*   r%   r#   <module>r     sF       	    - -    ' M KKST
KKG
 ""))9 #  !!&(;  " 
	
 	++$$!!*D % 	
010     T T  "  . hll+h//334h//334""#=?TU""#=?TU""#=?TU""#=?TU

 	BJ9 =///F((#V
2
2	E 	EG, G,T
~
 ~
Bq;T q;E%  M  s$   K !K- K*)K*-K98K9