
    Pi#                        d Z ddlZddlmZ ddlmZ ddlZddlZddlZ	ddl
Z
ddlmZ ddlmZ ddlmZmZmZmZ ddlZddlmZ ddlmZ dd	lmZmZmZmZm Z  	 ddl!Z!d
Z"n# e#$ r dZ"Y nw xY w	 ddl$Z$d
Z%n# e#$ r dZ%Y nw xY we
j&        '                    d          e
j&        '                    d          gZ( e
j)         e
j*        de
j&        +                    e% d          e
j&        ,                     e            dd          g           e
j*        de
j&        +                    e" d                    g          d             Z-e
j)        d             Z.e
j)        d             Z/e
j)        d             Z0e
j)        d             Z1e
j)        d             Z2 e
j)        ej        3                    ej4                  ej        3                    ej5        j6                  ej        3                    ej5        j7                  ej        8                    dd          ej        8                    dd          ej        8                    d d          ej        8                    d!d          g          d"             Z9	 	 	 	 	 	 	 	 	 d6d$Z:d% Z;d& Z<d' Z=d( Z>d) Z?d* Z@d+ ZAd, ZBd- ZC G d. d/          ZD G d0 d1eD          ZE G d2 d3eD          ZF G d4 d5eD          ZGdS )7ztest parquet compat    N)Decimal)BytesIO)using_string_dtype)is_platform_windows)pa_version_under15p0pa_version_under17p0pa_version_under19p0pa_version_under20p0)Version)FastParquetImplPyArrowImpl
get_engineread_parquet
to_parquetTFz2ignore:DataFrame._data is deprecated:FutureWarningz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningfastparquetfastparquet is not installedreasonTODO(infer_string) fastparquetr   strictmarkspyarrowpyarrow is not installed)paramsc                     | j         S Nparamrequests    p/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/io/test_parquet.pyenginer$   :   s    2 =    c                  <    t           st          j        d           dS )Nr   r   )_HAVE_PYARROWpytestskip r%   r#   par+   V   s      0.///9r%   c                     t           st          j        d           t                      r4|                     t          j                            dd                     dS )Nr   r   Fr   r   )_HAVE_FASTPARQUETr(   r)   r   applymarkermarkxfailr!   s    r#   fpr1   ]   sa     42333 
K%EeTT	
 	
 	
 =r%   c                  `    t          j        g dddt          j        ddg                    S )N         fooABr9   r:   columns)pd	DataFrameIndexr*   r%   r#   	df_compatr@   h   s1    <iiie44bhSz>R>RSSSSr%   c            
          t          j        t          d          t          t          dd                    t	          j        ddd          g dt          j        d	d
          d          } | S )Nabcr4            @      @float64dtypeTFT20130101r6   periods)abdef)r=   r>   listrangenparange
date_range)dfs    r#   df_cross_compatrX   m   so    	eeAqkk""39555$$$z1555
	
 
	

 
B Ir%   c                     t          j        t          d          dt          j        dgg dg dg dt          t          dd                    t          j        d	d
                              d          t          j        ddd          dt          j        dgg dt          j        dd	d          t          j	        d          t           j
        t          j	        d          gd          S )NrB   rM   crM   NrZ   )   foo   bars   bazr7   barbazr4   rC   r6      u1rD   rE   rF   rG          @      @rI   rJ   nsrL   unit20130103)stringstring_with_nanstring_with_nonebytesunicodeintuintfloatfloat_with_nanbooldatetimedatetime_with_nat)r=   r>   rR   rT   nanrS   rU   astyperV   	TimestampNaTr*   r%   r#   df_fullry      s    <5kk #RVS1 0 0 0---,,,a$$IaOO**400YsCy999"BFC0'''j!$GGGZ((Z(("	
 	
  r%   z2019-01-04T16:41:24+0200z%Y-%m-%dT%H:%M:%S%zz2019-01-04T16:41:24+0215z2019-01-04T16:41:24-0200z2019-01-04T16:41:24-0215c                     | j         S r   r   r!   s    r#   timezone_aware_date_listr{      s     =r%   r5   c                     	 t          |t          j                  st          d          pddipi  |r
|d<   |d<   	 fd}| ||
           dS  ||
           dS )a  Verify parquet serializer and deserializer produce the same results.

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

    Parameters
    ----------
    df: Dataframe
    engine: str, optional
        'pyarrow' or 'fastparquet'
    path: str, optional
    write_kwargs: dict of str:str, optional
    read_kwargs: dict of str:str, optional
    expected: DataFrame, optional
        Expected deserialization result, otherwise will be equal to `df`
    check_names: list of str, optional
        Closed set of column names to be compared
    check_like: bool, optional
        If True, ignore the order of index & columns.
    repeat: int, optional
        How many times to repeat the test
    z temp_file must be a pathlib.PathcompressionNr$   c                     t          |           D ]D} j        fi 
 t          fi 	}dv r
d j        d<   t	          j        |           Ed S )Nrj   r4   rj   )check_names
check_likecheck_dtype)rS   r   r   loctmassert_frame_equal)repeat_actualr   r   r   rW   expectedpathread_kwargswrite_kwargss      r#   comparez!check_round_trip.<locals>.compare   s    v 	 	ABM$//,///!$66+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                 n    ddl m} |                    | d          }|j        j        j        |k    sJ dS )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      sK     !     jjFj33G&,888888r%   c                     d}t          j        t          |          5  t          | |dd           d d d            d S # 1 swxY w Y   d S )Nz.engine must be one of 'pyarrow', 'fastparquet'matchr7   r_   )r(   raisesr   r   )r@   r   msgs      r#   test_invalid_enginer      s    
:C	z	-	-	- = =Iue<<<= = = = = = = = = = = = = = = = = =s   >AAc                     |r&t           s| j                            d          | _        t          j        dd          5  t          | |           d d d            d S # 1 swxY w Y   d S )Nstrio.parquet.enginer   )r	   r<   rv   r=   option_contextr   )r@   r+   using_infer_stringr   s       r#   test_options_pyr     s     <"6 <%-44U;;			.		:	: / /I.../ / / / / / / / / / / / / / / / / /s   AA #A c                     t          j        dd          5  t          | |           d d d            d S # 1 swxY w Y   d S )Nr   r   r=   r   r   )r@   r1   r   s      r#   test_options_fpr   
  s     
	.	>	> / /I.../ / / / / / / / / / / / / / / / / /   488c                     t          j        dd          5  t          | |           d d d            d S # 1 swxY w Y   d S )Nr   autor   )r@   r1   r+   r   s       r#   test_options_autor     s     
	.	7	7 / /I.../ / / / / / / / / / / / / / / / / /r   c                 4   t          t          d          t                    sJ t          t          d          t                    sJ t	          j        dd          5  t          t          d          t                    sJ t          t          d          t                    sJ t          t          d          t                    sJ 	 d d d            n# 1 swxY w Y   t	          j        dd          5  t          t          d          t                    sJ t          t          d          t                    sJ t          t          d          t                    sJ 	 d d d            n# 1 swxY w Y   t	          j        dd          5  t          t          d          t                    sJ t          t          d          t                    sJ t          t          d          t                    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   )r   r   r   r   r=   r   )r1   r+   s     r#   test_options_get_enginer     s   j++[99999j//AAAAA		.		:	: F F*V,,k:::::*Y//=====*]33_EEEEEEF F F F F F F F F F F F F F F
 
	.	>	> F F*V,,o>>>>>*Y//=====*]33_EEEEEEF F F F F F F F F F F F F F F
 
	.	7	7 F F*V,,k:::::*Y//=====*]33_EEEEEEF F F F F F F F F F F F F F F F F Fs9   A-CCC8A-E22E69E6A-HHHc                     ddl m}  |                     d          }|                     d          }t          sdn)t	          t
          j                  t	          |          k     }t          sdn)t	          t          j                  t	          |          k     }t          o| }t          o| }|s&|s%|rId| d}t          j
        t          |          5  t          d	           d d d            n# 1 swxY w Y   nDd
}t          j
        t          |          5  t          d	           d d d            n# 1 swxY w Y   |rKd| d}t          j
        t          |          5  t          d	           d d d            d S # 1 swxY w Y   d S d}t          j
        t          |          5  t          d	           d d d            d S # 1 swxY w Y   d S d S d S )Nr   )VERSIONSr   r   FzPandas requires version .z. or newer of .pyarrow.r   r   z6Unable to find a usable engine; tried using: 'pyarrow'z. or newer of .fastparquet.z3Use pip or conda to install the fastparquet package)pandas.compat._optionalr   getr'   r   r   __version__r-   r   r(   r   ImportErrorr   )r   
pa_min_ver
fp_min_verhave_pa_bad_versionhave_fp_bad_versionhave_usable_pahave_usable_fpr   s           r#   "test_get_engine_auto_error_messager   ,  s    100000 i((Jm,,J 	@W())GJ,?,??  !	D[,--
0C0CC  #>+>'>N&B/B+BN #. # 	#S
SSSE{%888 # #6"""# # # # # # # # # # # # # # # ME{%888 # #6"""# # # # # # # # # # # # # # #  	#W
WWWE{%888 # #6"""# # # # # # # # # # # # # # # # # # JE{%888 # #6"""# # # # # # # # # # # # # # # # # ### # # #sH   C00C47C4D55D9<D9#F  FF*GGGc                     | }|                     ||d            t          ||          }t          j        ||           t          ||ddg          }t          j        ||ddg                    d S 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  s     
BMM)BDM999)B///F&"%%%)Bc
CCCF&"c3Z.11111r%   c                     | }|                     ||d            t          ||          }t          j        ||           t          ||ddg          }t          j        ||ddg                    d S r   r   r   s         r#   test_cross_engine_fp_par   d  s}    	BMM)BDM999)B///F&"%%%)Bc
CCCF&"c3Z.11111r%   c                       e Zd Zd Zd ZdS )Basec                     t          j        ||          5  t          |||d            d d d            d S # 1 swxY w Y   d S )Nr   r}   )r(   r   r   )selfrW   r$   excerr_msgtemp_file_paths         r#   check_error_on_writezBase.check_error_on_writer  s    ]3g... 	E 	Er>6tDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   8<<c                     t          j        |          5  t          |||d            d d d            d S # 1 swxY w Y   d S )Nr   )r   external_error_raisedr   )r   rW   r$   r   r   s        r#   check_external_error_on_writez"Base.check_external_error_on_writew  s    %c** 	E 	Er>6tDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   6::N)__name__
__module____qualname__r   r   r*   r%   r#   r   r   q  s:        E E E
E E E E Er%   r   c                   H   e Zd Zd Zd Zej                            dg d          d             Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej                            dg d          d             Zej        j        ej        j        d                         ZdS )	TestBasicc                     t          j        g d          ddt          j        d          t          j        g d          fD ]"}d}|                     ||t          ||           #d S )Nr3   r4   r7   rJ   z+to_parquet only supports IO with DataFrames)r=   Seriesrw   rT   arrayr   r   )r   r$   r   objr   s        r#   
test_errorzTestBasic.test_error~  s}    Iiii  L$$HYYY
 	O 	OC @C%%c6:sINNNN	O 	Or%   c           	          t          j        t          d          t          t          dd                    d          }ddg|_        t          |||           d S )NrB   r4   rC   ri   rn   r7   r_   r=   r>   rR   rS   r<   r   )r   r$   r   rW   s       r#   test_columns_dtypeszTestBasic.test_columns_dtypes  sT    \T%[[eAqkk9J9JKKLL U^
Y/////r%   r}   )Ngzipsnappybrotlic                 `    t          j        dg di          }t          |||d|i           d S )Nr9   r3   r}   r   r=   r>   r   )r   r$   r}   r   rW   s        r#   test_compressionzTestBasic.test_compression  sI    \3			*++	60L	
 	
 	
 	
 	
 	
r%   c           	          t          j        t          d          t          t          dd                    d          }t          j        dt          d          i          }t	          ||||ddgi           d S )NrB   r4   rC   r   ri   r<   r   r   r=   r>   rR   rS   r   )r   r$   r   rW   r   s        r#   test_read_columnszTestBasic.test_read_columns  s    \T%[[eAqkk9J9JKKLL<4;; 788"XJ/	
 	
 	
 	
 	
 	
r%   c           
          t          j        t          t          d                    t          d          d          }t          j        dddgi          }t	          ||||ddgid	gdgd
d           d S )NrC   aabb)rn   partrn   r   r4   partition_colsr   )r   ==rM   )filtersr<   )r   r   r   r   r   )r   r$   tmp_pathrW   r   s        r#   test_read_filterszTestBasic.test_read_filters  s    \E!HH~~V 
 
 <A00*VH5%8$9ugNN	
 	
 	
 	
 	
 	
r%   c                    t          j        d           t          j        dg di          }t	          ||d           g dt          j        ddd          t          d	          g d
g}|D ]S}||_        t          |t          j	                  r|j        
                    d           |_        t	          ||d           Tg d|_        d|j        _        t	          ||d           d S )Nr   r9   r3   )r5   r6   rC   rJ   r6   re   rf   rB   )r4   r6   rC   )r   r4   r5   r7   )r(   importorskipr=   r>   r   rV   rR   indexr   DatetimeIndex
_with_freqname)r   r   rW   indexesr   s        r#   test_write_indexzTestBasic.test_write_index  s    I&&&\3			*++Y	222 IIM*ad;;;KKII	
  	7 	7EBH%!122 58..t44RI6666 99Y	22222r%   c                     |}t          j        dg di          }t           j                            g d          }||_        t          |||           d S )Nr9   r3   )rM   r4   )rM   r5   )rN   r4   )r=   r>   
MultiIndexfrom_tuplesr   r   )r   r+   r   r$   rW   r   s         r#   test_write_multiindexzTestBasic.test_write_multiindex  sZ    \3			*++))*H*H*HIIY/////r%   c           
         |}t          j        dddd          }t          j        t          j                            d                              dt          |          z  df          t          d          	          }t           j	        
                    d
dg|gddg          }|                    d           }||fD ]:}||_        t          |||           t          |||dddgi|ddg                    ;d S )Nz01-Jan-2018z01-Dec-2018MSre   )freqrg   r5   r6   ABCr;   Level1Level2leveldater   r<   r9   r:   r   r   )r=   rV   r>   rT   randomdefault_rngstandard_normallenrR   r   from_productcopyr   r   )	r   r+   r   r$   datesrW   index1index2r   s	            r#   test_multiindex_with_columnsz&TestBasic.test_multiindex_with_columns  s(   m]DQQQ\I!!!$$44a#e**na5HIIKK
 
 
 ++!5)'61B , 
 
 4((f% 
	 
	EBHRF333&c
3S#J    	
	 
	r%   c                    t          j        g dg dd          }d dd}|                    d          }t          |||||           t          j        g dg ddg d	
          }t          |||||           g dg dg}t          j        t	          t          d                    d t          d          D             d|
          }|                    d          }t          |||||           d S )Nr3   )qrs)rM   rN   F)r}   r   T)dropr   r   )zyxwvutsrr   r_   r_   r`   r`   r7   r7   quxr!  onetwor#  r$  r#  r$  r#  r$     c                     g | ]}| S r*   r*   ).0is     r#   
<listcomp>z7TestBasic.test_write_ignoring_index.<locals>.<listcomp>  s    +A+A+A1QB+A+A+Ar%   )r#  r$  )r=   r>   reset_indexr   rR   rS   )r   r$   r   rW   r   r   arrayss          r#   test_write_ignoring_indexz#TestBasic.test_write_ignoring_index  sb    \			@@AA'+e<< >>t>,,	6x	
 	
 	
 	

 \))///22:O:O:O
 
 
 		6x	
 	
 	
 	
 EDDDDD
 \qNN+A+Aa+A+A+ABB&
 
 
 >>t>,,	6x	
 	
 	
 	
 	
 	
r%   c                 R   t           j                            g d          }t          j        t          j                            d                              d          |          }|dk    r |                     ||t          d|           d S |dk    rt          |||           d S d S )Nr   r5   )rC   r6   r;   r   Column name must be a stringr   )r=   r   r   r>   rT   r  r  r  r   	TypeErrorr   )r   r$   r   
mi_columnsrW   s        r#   test_write_column_multiindexz&TestBasic.test_write_column_multiindex  s    ]../M/M/MNN
\I!!!$$44V<<j
 
 
 ]""%%FI'Ey     y  RF33333 ! r%   c                 <   g dg dg}t          j        t          j                            d                              d          |          }ddg|j        _        |dk    r |                     ||t          d	|           d S |d
k    rt          |||           d S d S )Nr   )r4   r5   r4   r5   r4   r5   r4   r5   r5   r%  r%  r;   r  r  r   zColumn namer   )r=   r>   rT   r  r  r  r<   r   r   r   r   r   r$   r   r+  rW   s        r#   &test_write_column_multiindex_nonstringz0TestBasic.test_write_column_multiindex_nonstring"  s    
 EDD$$$
 \I!!!$$44V<<f
 
 
 %h/
]""%%b&*mYWWWWWy  RF33333 ! r%   c                     |}g dg dg}t          j        t          j                            d                              d          |          }ddg|j        _        t          |||           d S )Nr   r"  r5   r3  r;   	ColLevel1	ColLevel2)	r=   r>   rT   r  r  r  r<   r   r   r   r+   r   r$   r+  rW   s         r#   #test_write_column_multiindex_stringz-TestBasic.test_write_column_multiindex_string3  s      EDDDDD
 \I!!!$$44V<<f
 
 
 (5
Y/////r%   c                     |}g d}t          j        t          j                            d                              d          |          }d|j        _        t          |||           d S )N)r_   r`   r7   r!  r5   r%  rC   r;   	StringCol)	r=   r>   rT   r  r  r  r<   r   r   r9  s         r#   test_write_column_index_stringz(TestBasic.test_write_column_index_stringD  sr      .--\I!!!$$44V<<f
 
 
 &
Y/////r%   c                     g d}t          j        t          j                            d                              d          |          }d|j        _        |dk    r |                     ||t          d|           d S t          |||           d S )Nr4   r5   r6   rC   r5   r<  r;   NonStringColr   r.  )r=   r>   rT   r  r  r  r<   r   r   r/  r   r4  s        r#   !test_write_column_index_nonstringz+TestBasic.test_write_column_index_nonstringR  s     \I!!!$$44V<<f
 
 
 )
]""%%FI'Ey     RF33333r%   c                    t          j        d          }|dk    r5t           j                            d          }|                    |           t          j        t          j        g dd          t          j        g dd          t          j        g d          t          j        g d	          t          j        g d
d          t          j        g dd          t          j        g dd          d          }|                    ||           t          ||          }t          ||d          }|d         j
        t          j
        d          k    sJ t          j        t          j        g dd          t          j        g dd          t          j        g dd          t          j        g d	d          t          j        g d
d          t          j        g dd          t          j        g dd          d          }	|dk    r.|                    dd          }|	                    dd          }	t          j        ||	           d S )Npyarrow.parquetr   z.Fastparquet nullable dtype support is disabledr   r4   r5   r6   Nint64uint8)rM   rN   rZ   N)TFTNr@  )      ?rc   rd   Nfloat32rF   )rM   rN   rZ   rO   rP   rQ   gr   numpy_nullable)r$   dtype_backendrM   Int64rG   UInt8ri   booleanFloat32Float64rZ   r4   )axis)r(   r   r/   r0   r.   r   tabler   write_tabler   rH   rT   r=   r>   r  r   r   )
r   r$   r"   r   pqr/   rS  result1result2r   s
             r#   test_dtype_backendzTestBasic.test_dtype_backendb  so    !233]"" ;$$G %  D %%%]???G<<]???G<<]#8#8#899]#<#<#<==]<<<99]#8#8#8)DD]#8#8#8)DD
 

 
 	ui(((y888yGWXXXs|!RXi%8%88888<XoooW===XoooW===X3338DDDX777yIIIXlll':::X3339EEEX3339EEE 

 

 ]"" ll3Ql//G}}Sq}11H
gx00000r%   rH   )	rM  rN  rO  objectzdatetime64[ns, UTC]rp   z	period[D]rQ  ri   c                    t          j        dt          j        g |          i          }t          j        dd           d }|dk    r*t          j        dt          j        g d          i          }t          |||ddi|	           d S )
NvaluerG   r   11.0.0rp   rQ  rL  rK  r  )r=   r>   r   r(   r   r   )r   r+   rH   r   rW   r   s         r#   test_read_empty_arrayzTestBasic.test_read_empty_array  s      \"E222
 

 	Ix000G|RXb	::: H
 	(*:;	
 	
 	
 	
 	
 	
r%   c                    |dk    rt          j        |           t           |dddd          d          5 }|                    |                                           t          |j        |	          }d d d            n# 1 swxY w Y   |}t          r$|j        	                    t                    |_        t          j        ||           d S )
Nr   iodataparquetzsimple.parquetrb)mode)contentr   )r(   r   openserve_contentreadr   urlr	   r<   rv   rY  r   r   )r   
httpserverdatapathr@   r$   rQ   rW   r   s           r#   test_parquet_read_from_urlz$TestBasic.test_parquet_read_from_url  s    V'''((44DEEDQQQ 	=UV$$QVVXX$666jnV<<<B	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=  	?'/66v>>H
b(+++++s   ?BB
BN)r   r   r   r   r   r(   r/   parametrizer   r   r   r   r  r  r,  r1  r5  r:  r>  rB  rX  r]  network
single_cpurk  r*   r%   r#   r   r   }  s       	O 	O 	O0 0 0 [],N,N,NOO
 
 PO

 
 

 
 
&3 3 3.0 0 0  .$
 $
 $
L4 4 44 4 4"0 0 0"0 0 04 4 4 .1 .1 .1` [
	
 
	
 
	
 
 
 
0 [[
, 
,  
, 
, 
,r%   r   c                   T   e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                             e            d	          e
j                            e d
	          e
j                            deej        g          d                                     Zd Ze
j        j        d             Ze
j        j        d             Ze
j        j        e
j                            ddgg g          d                         Zd Zd Zd Zd Ze
j                            ded gddg          d             Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&e
j        '                    d$          d%             Z(d& Z)e
j                            d'd(d)g e
j*        d*d+ge
j                            e+e,d,-          .           e
j*         e-j-        d/d)d)d(d(           e-j-        d/d)d)d)d)          ge
j                            e.d0	          .          g          d1             Z/d2 Z0d3 Z1d4 Z2d5 Z3d6 Z4d7 Z5d8 Z6d9S ):TestParquetPyArrowc                     |}t          j        dd           t          j        ddd          }|                    d           }||d<   g d|d	<   t          |||           d S )
Nr   r\  rJ   r6   Europe/BrusselsrL   tzdatetime_tzTNTbool_with_none)r(   r   r=   rV   r   r   )r   r+   ry   r   rW   dtis         r#   
test_basiczTestParquetPyArrow.test_basic  sw    Ix000 mJ6GHHHnnT""=111Y+++++r%   c           	      ~    |}t          j        ddd          |d<   t          ||||ddg         dddgi	           d S )
NrJ   r6   rr  rs  ru  ri   rn   r<   r   )r=   rV   r   )r   r+   ry   r   rW   s        r#   test_basic_subset_columnsz,TestParquetPyArrow.test_basic_subset_columns  si     M*aDUVVV=5)*"Xu$56	
 	
 	
 	
 	
 	
r%   c                 >   |                     |          }t          |t                    sJ t          |          }t	          |          }|                                }d |j        d<   |d                             d          |d<   t          j	        ||           d S )Nr   r   rt   zM8[us])
r   r   rl   r   r   r  r   rv   r   r   )r   r+   ry   	buf_bytes
buf_streamresr   s          r#   *test_to_bytes_without_path_or_buf_providedz=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  s    &&b&11	)U+++++Y''
:&&<<>>-1)*(01D(E(L(LX(V(V$%
c8,,,,,r%   c                     t          j        t          j        d                              dd          t          d                                                    }|                     ||t          d|           d S )N   rC   r6   aaar;   zDuplicate column names found	r=   r>   rT   rU   reshaperR   r  r   r   r   r+   r   rW   s       r#   test_duplicate_columnsz)TestParquetPyArrow.test_duplicate_columns  sn    \")B--//155tE{{KKKPPRR!!J >		
 	
 	
 	
 	
r%   c                 |    t          j        dt          j        dd          i          }t          |||           d S )NrM   1 dayr6   rK   )r=   r>   timedelta_ranger   r  s       r#   test_timedeltaz!TestParquetPyArrow.test_timedelta  s>    \3 27A F F FGHHY+++++r%   c                 z    t          j        dg di          }|                     ||t          j        |           d S )NrM   rM   r4   rc   )r=   r>   r   r   ArrowExceptionr  s       r#   test_unsupportedz#TestParquetPyArrow.test_unsupported  s?    \3.// 	**2r73I9UUUUUr%   c                     t          j        ddt           j                  }t          j        |dg          }t
          r$|                     ||t          j        |           d S t          |||           d S )Nr5   
   rG   fp16r`  r<   )
rT   rU   float16r=   r>   r   r   r   r  r   )r   r+   r   r`  rW   s        r#   test_unsupported_float16z+TestParquetPyArrow.test_unsupported_float16  s     yBbj111\tfX666 	0..B.	     RB/////r%   zqPyArrow does not cleanup of partial files dumps when unsupported dtypes are passed to_parquet function in windowsr   zfloat16 works on 15	path_typec                 h   t          j        ddt           j                  }t          j        |dg          } ||          }t          j        t          j                  5  |	                    ||           d d d            n# 1 swxY w Y   t          j                            |          rJ d S )Nr5   r  rG   r  r  )r   r$   )rT   rU   r  r=   r>   r   r   r   r  r   osr   isfile)r   r+   r  r   r`  rW   r   s          r#    test_unsupported_float16_cleanupz3TestParquetPyArrow.test_unsupported_float16_cleanup  s     yBbj111\tfX666y##%g&<== 	0 	0MMtBM///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	07>>$'''''''s   "BB
B
c           
         t          j        t          j        t          d                    t          j        g dt          j        g d                    t          j        g dg dd          d	          }t          |||           d S )
Nabcdef)r_   r7   r7   r_   Nr_   r^   rG   )NrN   rZ   NrZ   rN   )rN   rZ   rO   T)
categoriesorderedrM   rN   rZ   )r=   r>   CategoricalrR   CategoricalDtyper   r  s       r#   test_categoricalz#TestParquetPyArrow.test_categorical#  s    \^DNN33^===-.C.C.CDD  
 ^444.    
 
" 	Y+++++r%   c                     t          j        d          } |j        di |}d|i}t          ||||j         d||           d S )Ns3fs
filesystem/pyarrow.parquetr   r   r   r*   )r(   r   S3FileSystemr   r   )	r   r@   s3_bucket_publics3sor+   r   r  s3kws	            r#   test_s3_roundtrip_explicit_fsz0TestParquetPyArrow.test_s3_roundtrip_explicit_fs8  su     "6**T&&&&B$);;;	
 	
 	
 	
 	
 	
r%   c                 J    d|i}t          |||d|j         d||           d S )Nstorage_optionss3://r  r  r   r   )r   r@   r  r  r+   r   s         r#   test_s3_roundtripz$TestParquetPyArrow.test_s3_roundtripH  sP     "4(@).@@@	
 	
 	
 	
 	
 	
r%   partition_colr9   c                 X   t          j        d           |                                }|rX|                    t                              |t          j                            }d}||                             |          ||<   t          ||||d|j	         dd|i|d |ddd		  	         d S )
Nr  categoryr  z/parquet_dirr  )r   r}   r  Tr4   )r   r   r   r   r   r   )
r(   r   r  rv   dictfromkeysrT   int32r   r   )	r   r@   r  r+   r  r  r   expected_dfpartition_col_types	            r#   test_s3_roundtrip_for_dirz,TestParquetPyArrow.test_s3_roundtrip_for_dirU  s    
 	F###nn&&  	%,,T]]="(-S-STTK!+)4])C)J)J"* *K& 	 <).<<<*D1"/##' 
 	
 	
 	
 	
 	
 	
r%   c                    t          j        d           t                      }|                    |           t	          |          }|r&t
          s|j                            d          |_        t          j	        ||           d S )Nr   r   )
r(   r   r   r   r   r	   r<   rv   r   r   )r   r@   r   bufferdf_from_bufs        r#   test_read_file_like_obj_supportz2TestParquetPyArrow.test_read_file_like_obj_supportw  s    I&&&V$$$"6** 	@&: 	@ ) 1 8 8 ? ?I
i55555r%   c                    t          j        d           |                    dd           |                    dd           t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   HOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)r(   r   setenvr   OSErrorr   r   )r   r@   monkeypatchs      r#   test_expand_userz#TestParquetPyArrow.test_expand_user  sH   I&&&6=111=-888]7*<=== 	+ 	+)***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]7*<=== 	3 	3  !1222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s$   A88A<?A<CCCc                     ddg}|}|                     ||d            t          ||           t          |          j        |j        k    sJ d S )Nrr   rn   r   r}   r   r   r   shape)r   r   r+   ry   r   rW   s         r#   test_partition_cols_supportedz0TestParquetPyArrow.test_partition_cols_supported  s\     %
h~4PPPh777H%%+rx777777r%   c                     d}|g}|}|                     ||d            t          ||           t          |          j        |j        k    sJ d S )Nrr   r  r  )r   r   r+   ry   r   partition_cols_listrW   s          r#   test_partition_cols_stringz-TestParquetPyArrow.test_partition_cols_string  sb    -.
h~4PPPh(;<<<H%%+rx777777r%   c                     | S r   r*   )xs    r#   <lambda>zTestParquetPyArrow.<lambda>  s    Q r%   ri   zpathlib.Path)idsc                     d}|g}|} ||          }|                     ||           t          |          j        |j        k    sJ d S )Nr:   )r   )r   r   r  )	r   r   r+   r@   r  r   r  rW   r   s	            r#   test_partition_cols_pathlibz.TestParquetPyArrow.test_partition_cols_pathlib  sa     -.y""
d+>???D!!'28333333r%   c                 T    t          j        g g           }t          |||           d S )N)r   r<   r   r  s       r#   test_empty_dataframez'TestParquetPyArrow.test_empty_dataframe  s.    \B///Y+++++r%   c                     dd l }t          j        dddgi          } |j         |j        d |j                              g          }|                    t                    }t          |||d|i|           d S )Nr   r  r4   typer   r  )	r   r=   r>   r   fieldbool_rv   rr   r   )r   r+   r   r   rW   r   out_dfs          r#   test_write_with_schemaz)TestParquetPyArrow.test_write_with_schema  s    \3A-((s!I!I!I JKK4	2Xv,>	
 	
 	
 	
 	
 	
r%   c           	         t          j        d           t          j        t          j        g dd          t          j        g dd          t          j        g dd          d          }|r0t
          r)t          ||||                    d	d
i                     nt          |||           t          j        dt          j        g dd          i          }t          |||           d S )Nr   r3   rM  rG   UInt32r[   ri   r  rZ   r   r   rM   rE  )r(   r   r=   r>   r   r	   r   rv   )r   r+   r   r   rW   s        r#    test_additional_extension_arraysz3TestParquetPyArrow.test_additional_extension_arrays  s    	I&&&\Yyyy888Yyyy999Y///x@@@ 
 
  	0"6 	0RBC<9P9PQQQQQRB///\3	/// I I IJKKY+++++r%   c                    t          j        d           t          j        dt          j        g dd          i          }t          j        d|          5  |rVt          r|                    d          }n|                    d| d	          }|j                            d          |_        n|                    d| d	          }t          ||||
           d d d            d S # 1 swxY w Y   d S )Nr   rM   r[   string[pyarrow]rG   string_storager   zstring[]r  )
r(   r   r=   r>   r   r   r	   rv   r<   r   )r   r+   r  r   r   rW   r   s          r#    test_pyarrow_backed_string_arrayz3TestParquetPyArrow.test_pyarrow_backed_string_array  s^    	I&&&\3	*:*:*:BS T T TUVV/@@ 		C 		C! B' F!yy//HH!yy)D>)D)D)DEEH#+#3#:#:5#A#A  99%@~%@%@%@AARBBBBB		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		C 		Cs   BC((C,/C,c                 L   t          j        d           t          j        t          j                            g d          t          j        ddd          t          j                            t          j        ddd                    d          }t          |||           d S )	Nr   ))r   r4   )r4   r5   )r6   rC   z
2012-01-01r6   D)rL   r  rC   )rZ   rO   rP   )
r(   r   r=   r>   IntervalIndexr   period_rangefrom_breaksrV   r   r  s       r#   test_additional_extension_typesz2TestParquetPyArrow.test_additional_extension_types  s     	I&&&\%112J2J2JKK_\13GGG%11M,DDD 	 	
 	
 	Y+++++r%   c                     d}t          j        dt          j        ddd          i          }t          |||d|i           d S )	Nz2.6rM   z
2017-01-011nsr  r  rL   versionr   )r=   r>   rV   r   )r   r+   r   verrW   s        r#   test_timestamp_nanosecondsz-TestParquetPyArrow.test_timestamp_nanoseconds  sQ     \3lPR S S STUUY)S9IJJJJJJr%   c                    d|gz  }t          j        |d|i          }|d d          }|j        t          j        k    r	 dd l}|j        j                            |          }|	                    |
                                dz            }	|j                            |	          |_        |d         j                            |	          |d<   n# t          $ r Y nw xY wt          |||d|           d S )N   index_as_colr   r`  r   <   F)r   r   )r=   r>   tzinfors   UTCpytzr   rt  	utcoffsetFixedOffsettotal_seconds
tz_convertdtr   r   )
r   r+   r{   r   idxrW   r   r  offsetrt  s
             r#   test_timezone_aware_indexz,TestParquetPyArrow.test_timezone_aware_index  s   +,,\>3*?@@@ aaa5#*hl::V ../GHH%%f&:&:&<&<r&ABB!)!:!:2!>!>+3N+C+F+Q+QRT+U+U((     	YQQQQQQs   C 
CCc                    t          j        d           t          j        dt	          t          d                    i          }|                    ||           t          ||dg          }t          |          dk    sJ d S )Nr   rM   r6   r   rM   r   r   r   r4   )	r(   r   r=   r>   rR   rS   r   r   r  )r   r+   r   rW   r   s        r#   test_filter_row_groupsz)TestParquetPyArrow.test_filter_row_groups  s}    I&&&\3U1XX/00
i+++in5EFFF6{{ar%   z2ignore:make_block is deprecated:DeprecationWarningc                 `   dd l }|}t          j        dddd          }|                    d           }||d<   g d|d	<   |j                            |          }|                    t          j        
          }|d                             d          |d<   t          |||ddi|           d S )Nr   rJ   r6   rr  re   )rL   rt  rg   ru  rv  rw  )types_mapperrt   ztimestamp[us][pyarrow]rL  r   r$   r   r   )
r   r=   rV   r   Tablefrom_pandas	to_pandas
ArrowDtyperv   r   )	r   r+   ry   r   r   rW   rx  pa_tabler   s	            r#   &test_read_dtype_backend_pyarrow_configz9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s     mJ6GdSSSnnT""=111=,,R00%%2=%AA(01D(E(L(L$)
 )
$% 	()4	
 	
 	
 	
 	
 	
r%   c                     t          j        dddgit          j        ddgd          d	          }|                                }|j                            d          |_        t          |||d
di|           d S )NrM   r4   r5   r6   rC   testr   zint64[pyarrow])r   rH   rL  r   r
  )r=   r>   r?   r  r   rv   r   )r   r+   r   rW   r   s        r#   ,test_read_dtype_backend_pyarrow_config_indexz?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index1  s    \1a&M1a&v!>!>!>FV
 
 
 7799!../?@@()4	
 	
 	
 	
 	
 	
r%   r<   r   r4   r\   r]   z*https://github.com/apache/arrow/pull/44171)r   r   r     z/pa.pandas_compat passes 'datetime64' to .astypec           	          t          j        t          d          t          t          dd                    d          }||_        t          |||           d S )NrB   r4   rC   r   r   )r   r+   r<   r   rW   s        r#   test_columns_dtypes_not_invalidz2TestParquetPyArrow.test_columns_dtypes_not_invalid@  sP    2 \T%[[eAqkk9J9JKKLL
Y+++++r%   c                 ~    t          j        t          j        g dd                    }t          |||           d S )Nr  zcustom namer  r  )r=   r>   r?   r   r  s       r#   test_empty_columnsz%TestParquetPyArrow.test_empty_columns^  s?    \} M M MNNNY+++++r%   c                     t          j        ddgi          }ddi|_        |                    ||           t	          ||          }|j        |j        k    sJ d S )Nr4   r`  test_attributer   )r=   r>   attrsr   r   )r   r   r+   rW   new_dfs        r#   test_df_attrs_persistencez,TestParquetPyArrow.test_df_attrs_persistencec  si    \A3x((($a(
i+++i333|rx''''''r%   c           	         t          j        dddgiddg          }|                    ||           t          j        dd          5  t	          ||          }d d d            n# 1 swxY w Y   t          j        t          j        	          }t          j        dddgi|t          j        ddg|
          t          j        dgt          r	|st          n|
                    }t          j        ||           d S )NrM   r  yrN   )r`  r   r   future.infer_stringTna_valuerG   )r`  rH   r   r<   )r=   r>   r   r   r   StringDtyperT   ru   r?   r	   rY  r   r   )r   r   r+   r   rW   r   rH   r   s           r#   test_string_inferencez(TestParquetPyArrow.test_string_inferencej  sJ   \c3Z0c
CCC
i+++4d;; 	8 	8!)B777F	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8///<Sz"(C:U333H2X;MXFFSX  	

 

 

 	fh/////s   	A''A+.A+c           	         dd l }t          j        dt          d          gid          }|                    ||                    d|                    d          fg                     t          |          }t          rt          j        ddgid	          }n&t          j        dt          d          gid
          }t          j
        ||           d S )Nr   rM   z123.00r  rG   r  )r   123ri   rY  )r   r=   r>   r   r   r   
decimal128r   r	   r   r   )r   r   r+   rW   r   r   s         r#   test_roundtrip_decimalz)TestParquetPyArrow.test_roundtrip_decimal~  s    \3!2!2 34<MNNN
i		Cq9I9I3J2K(L(LMMMi(( 	P|S5'N(CCCHH|S78+<+<*=$>hOOOH
fh/////r%   c           
      :   dd l }dd lm} |                    d|                    g d|                                          i          }|                    ||           t          j        dd          5  t          |          }d d d            n# 1 swxY w Y   t          j
        dg dit          j        t          j                  t          j        dgt          j        t          j                                      }t          j        ||           d S )	Nr   rM   )NrN   rZ   r"  Tr#  rG   )r`  rH   r<   )r   pyarrow.parquetra  rS  r   large_stringrT  r=   r   r   r>   r%  rT   ru   r?   r   r   )r   r   r+   rU  rS  r   r   s          r#   #test_infer_string_large_string_typez6TestParquetPyArrow.test_infer_string_large_string_type  sT   $$$$$$#rxx(8(8(8"//:K:KLLMNN
ui(((4d;; 	- 	-!),,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-<'''(."&111HcU"."&*I*I*IJJJ
 
 

 	fh/////s   5BBBc                    t          j        dd          }t          j        d          }|                    t          j        ddd          g|                    d                    }|                    |gdg	          }|                    ||           t          |          }t          j	        dt          j        ddd          gid
          }t          j        ||           d S )Nr   13.0.0rD  i@  r4   usr  	timestampr
  zdatetime64[us])r`  rH   )r(   r   r   rs   r2  rS  rT  r   r=   r>   r   r   )r   r   r+   rU  arrrS  r   r   s           r#   test_non_nanosecond_timestampsz1TestParquetPyArrow.test_non_nanosecond_timestamps  s     H55 !233hh)$1556R\\$=O=OhPP#{m44
ui(((i((< 1$1 = =>?"
 
 
 	fh/////r%   c           	         t          j        dd          } |j        d |j         |j                     |j                              fg          }t          j        dddiidddiig          }t          |||d|id	d
dii           d S )Nr   r0  r7   r9   r4   r:   r5   r   to_pandas_kwargsmaps_as_pydictsr   )r   r   )	r(   r   r   map_ri   rF  r=   r>   r   )r   r+   r   r   r   rW   s         r#   test_maps_as_pydictsz'TestParquetPyArrow.test_maps_as_pydicts  s    %i::\W\.'."2"2MGMOODDEF
 
 \EC8,usAh.?@AA"F++.?-JK	
 	
 	
 	
 	
 	
r%   N)7r   r   r   ry  r{  r  r  r  r  r  r(   r/   r0   r   skipifr   rl  r   r   r   r  r  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r    r
   NotImplementedErrorrs   r   r  r  r  r&  r*  r.  r4  r9  r*   r%   r#   rp  rp    sB       
, 
, 
,
 
 
- - -
 
 
, , ,V V V
0 
0 
0 [?    [009NOO[[3*=>>
( 
( ?> PO 
(, , ,* [
 
 
 [

 

 

 [[_ubk::
 
 ;: 
@6 6 63 3 38 8 88 8 8 [c;;'h-G   	4 	4 	4, , ,

 
 
, , ,&C C C", , , K K KR R R:      [ TUU
 
 VU
2
 
 
 [FFL k''(.G (     FL%H%dAq!Q77%H%dAq!Q77 k''(L (  	 	 		
 0, ,1 0,, , ,
( ( (0 0 0(0 0 00 0 0<0 0 0
 
 
 
 
r%   rp  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j        j        d             Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestParquetFastParquetc                    t          j        d          }|                    d          }|}t          j        dd|          }|                    d           }||d<   t          j        dd          |d	<   t          |||           d S )
Nr  z
US/EasternrJ   r6   rs  ru  r  rK   	timedelta)r(   r   timezoner=   rV   r   r  r   )	r   r1   ry   r"   r   r  rt  rW   rx  s	            r#   ry  z!TestParquetFastParquet.test_basic  s    "6**]]<((mJb999nnT""=,Wa@@@;Y+++++r%   c           	         t          j        t          d          t          t          dd                    d          }t          }d}ddg|_        |                     |||||           ddg|_        |                     |||||           t          j        d	dddd          t          j        d	dddd          g|_        |                     |||||           d S )
NrB   r4   rC   r   r.  r   r\   r]   r  )r=   r>   rR   rS   r/  r<   r   rs   )r   r1   r   rW   errr   s         r#   test_columns_dtypes_invalidz2TestParquetFastParquet.test_columns_dtypes_invalid  s    \T%[[eAqkk9J9JKKLL, V
!!"b#sI>>> f%
!!"b#sI>>> dAq!Q//dAq!Q//

 	!!"b#sI>>>>>r%   c                     t          j        t          j        d                              dd          t          d                                                    }d}|                     ||t          ||           d S )Nr  rC   r6   r  r;   z9Cannot create parquet dataset with duplicate column namesr  r   r1   r   rW   r   s        r#   r  z-TestParquetFastParquet.test_duplicate_columns  sg    \")B--//155tE{{KKKPPRRI!!"b*c9EEEEEr%   c                     t          j        dg di          }t          j        ddt          j        dgid          }t	          ||||d           d S )	NrM   )TNFrH  g        r  rG   F)r   r   )r=   r>   rT   ru   r   )r   r1   r"   r   rW   r   s         r#   test_bool_with_nonez*TestParquetFastParquet.test_bool_with_none  s`    \3 3 3 3455<sBFC&8 9KKK 	YX5QQQQQQr%   c                    t          j        dt          j        ddd          i          }|                     ||t          d |           t          j        dg di          }d}|                     ||t          ||           d S )NrM   2013Mr6   r  r  z"Can't infer object conversion type)r=   r>   r  r   r   rF  s        r#   r  z'TestParquetFastParquet.test_unsupported  s    \3S! L L LMNN!!"b*dIFFF \3.//2!!"b*c9EEEEEr%   c                     t          j        dt          j        t          d                    i          }t	          |||           d S )NrM   rB   )r=   r>   r  rR   r   )r   r1   r   rW   s       r#   r  z'TestParquetFastParquet.test_categorical  s>    \3tE{{ ; ;<==Y+++++r%   c                     dt          t          d                    i}t          j        |          }|                    ||d d           t          ||dg          }t          |          dk    sJ d S )NrM   r6   r4   )r$   r}   row_group_offsetsr  r  )rR   rS   r=   r>   r   r   r  )r   r1   r   rO   rW   r   s         r#   r  z-TestParquetFastParquet.test_filter_row_groups  st    $uQxx..!\!__
iPQRRRin5EFFF6{{ar%   c           
      L    t          |||d|j         dd|id |d           d S )Nr  z/fastparquet.parquetr  )r}   r  r  r  )r   r@   r  r  r1   r   s         r#   r  z(TestParquetFastParquet.test_s3_roundtrip  sS     	D).DDD*D1)-$GG	
 	
 	
 	
 	
 	
r%   c                     ddg}|}|                     |d|d            t          j                            |          sJ dd l} |j        t          |          d          j        }t          |          dk    sJ d S )Nrr   rn   r   r$   r   r}   r   Fr5   	r   r  r   existsr   ParquetFiler   catsr  r   r   r1   ry   r   rW   r   actual_partition_colss           r#   r  z4TestParquetFastParquet.test_partition_cols_supported  s     %
 )	 	 	
 	
 	
 w~~h''''' 7 7Hu M M R())Q......r%   c                     d}|}|                     |d|d            t          j                            |          sJ dd l} |j        t          |          d          j        }t          |          dk    sJ d S )Nrr   r   rQ  r   Fr4   rR  rV  s           r#   r  z1TestParquetFastParquet.test_partition_cols_string)  s    
 )	 	 	
 	
 	
 w~~h''''' 7 7Hu M M R())Q......r%   c                     ddg}|}|                     |dd |           t          j                            |          sJ dd l} |j        t          |          d          j        }t          |          dk    sJ d S )Nrr   rn   r   )r$   r}   partition_onr   Fr5   rR  rV  s           r#   test_partition_on_supportedz2TestParquetFastParquet.test_partition_on_supported9  s     %
 '	 	 	
 	
 	
 w~~h''''' 7 7Hu M M R())Q......r%   c                     ddg}|}d}t          j        t          |          5  |                    |dd ||           d d d            d S # 1 swxY w Y   d S )Nrr   rn   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r$   r}   rZ  r   )r(   r   r   r   )r   r   r1   ry   r   rW   r   s          r#   3test_error_on_using_partition_cols_and_partition_onzJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_onI  s     !%  	 ]:S111 	 	MM$ +-    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 z    t          j                    }|                                }t          ||||           d S )Nr  )r=   r>   r  r   )r   r1   r   rW   r   s        r#   r  z+TestParquetFastParquet.test_empty_dataframe\  s7    \^^7799YX>>>>>>r%   c                     d|gz  }t          j        |d|i          }|                                }d|j        _        t          ||||           d S )Nr  r  r  r   r  )r=   r>   r  r   r   r   )r   r1   r{   r"   r   r  rW   r   s           r#   r  z0TestParquetFastParquet.test_timezone_aware_indexb  s_     +,,\>3*?@@@7799%YX>>>>>>r%   c                 (   t          j        |                              d           t          j        t
                    5  t          |d           d d d            n# 1 swxY w Y   t          j        |                              d           d S )Ns   breakitr   r   F)
missing_ok)r   r   write_bytesr   r   	Exceptionr   unlink)r   r   s     r#   $test_close_file_handle_on_read_errorz;TestParquetFastParquet.test_close_file_handle_on_read_errorm  s    Y++J777%i00 	: 	:=9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	Y&&%&88888s   AA#&A#c                    t          j        ddgddgd          }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t	          ||          }t          j        ||           d S )Nr   r4   r8   r  wbr   )r=   r>   re  r   r   r   r   )r   r$   r   rW   rQ   r   s         r#   test_bytes_file_namez+TestParquetFastParquet.test_bytes_file_namet  s    \aV1a&99:::)T"" 	aMM!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 i777
fb)))))s   AAAc                    t          j        d           t          j        ddgddgd          }t          j        t
          d          5  |                    |dd	           d d d            n# 1 swxY w Y   t          j        |          	                    d
           t          j        t
          d          5  t          |dd	           d d d            d S # 1 swxY w Y   d S )Nr   r   r4   r8   r  zfilesystem is not implementedr   r7   r$   r  r\   )r(   r   r=   r>   r   r<  r   r   r   rb  r   r   r   rW   s      r#   test_filesystem_notimplementedz5TestParquetFastParquet.test_filesystem_notimplemented}  s   M***\aV1a&99:::].6UVVV 	M 	MMM)MeMLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Y++F333].6UVVV 	L 	L=UKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L$   A11A58A5>CC"%C"c                    t          j        d           t          j        ddgddgd          }t          j        t
          d          5  |                    |dd	           d d d            n# 1 swxY w Y   t          j        |          	                    d
           t          j        t
          d          5  t          |dd	           d d d            d S # 1 swxY w Y   d S )Nr   r   r4   r8   r  z1filesystem must be a pyarrow or fsspec FileSystemr   r7   rj  r\   )r(   r   r=   r>   r   r   r   r   r   rb  r   rk  s      r#   test_invalid_filesystemz.TestParquetFastParquet.test_invalid_filesystem  s   I&&&\aV1a&99:::]Q
 
 
 	I 	I MM)I%MHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 	Y++F333]Q
 
 
 	H 	H 9GGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hrm  c                 *   t          j        d          }t          j        ddgddgd          }t          j        t
          d          5  |                    |d|                                d	d
i           d d d            n# 1 swxY w Y   t          j	        |          
                    d           t          j        t
          d          5  t          |d|                                d	d
i           d d d            d S # 1 swxY w Y   d S )Nz
pyarrow.fsr   r4   r8   r  z8storage_options not supported with a pyarrow FileSystem.r   r   r7   r_   )r$   r  r  r\   )r(   r   r=   r>   r   r<  r   LocalFileSystemr   r   rb  r   )r   r   pa_fsrW   s       r#   .test_unsupported_pa_filesystem_storage_optionszETestParquetFastParquet.test_unsupported_pa_filesystem_storage_options  s   #L11\aV1a&99:::]L
 
 
 		 		 MM  0022!&	    			 		 		 		 		 		 		 		 		 		 		 		 		 		 		 	Y++F333]L
 
 
 		 		   0022!&	   			 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s$   .BB
B
(DDDc           	          d}t          j        dt          t          dd                    i          }|                    |           t          j        t          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rn   r4   rC   r   numpy)rL  )	r=   r>   rR   rS   r   r(   r   r   r   )r   r$   r   r   rW   s        r#   test_invalid_dtype_backendz1TestParquetFastParquet.test_invalid_dtype_backend  s    % 	 \5$uQ{{"3"3455
i   ]:S111 	; 	;'::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s   $BB
BN)r   r   r   ry  rD  r  rH  r  r  r  r(   r/   rn  r  r  r  r[  r]  r  r  re  rh  rl  ro  rs  rv  r*   r%   r#   r>  r>    sa       
, 
, 
,? ? ?*F F FR R R	F 	F 	F, , ,      [	
 	
 	
/ / / / / / / / /   &? ? ?	? 	? 	?9 9 9* * *L L LH H H  6; ; ; ; ;r%   r>  )	NNNNNTFTr5   )H__doc__rs   decimalr   r_  r   r  r   ru  rT   r(   pandas._configr   pandas.compatr   pandas.compat.pyarrowr   r   r	   r
   pandasr=   pandas._testing_testingr   pandas.util.versionr   pandas.io.parquetr   r   r   r   r   r   r'   r   r   r-   r/   r;  
pytestmarkfixturer    r:  r0   r$   r+   r1   r@   rX   ry   nowr  rA  minmaxstrptimer{   r   r   r   r   r   r   r   r   r   r   r   r   rp  r>  r*   r%   r#   <module>r     s                  				       - - - - - - - - - - - -                      ' ' ' ' ' '             NNNMM   MMM   
 KSTT
KG 
 ""))9 #   !!&&((;  "  
	
 	
 	
 	+$$!!*D %  	
 	
 	
  0 1 0       T T T   "   . hl++h/344h/344""#=?TUU""#=?TUU""#=?TUU""#=?TUU
 
 
 
 
 	B B B BJ9 9 9 = = =/ / // / // / /F F F((# (# (#V
2 
2 
2
2 
2 
2	E 	E 	E 	E 	E 	E 	E 	EG, G, G, G, G, G, G, G,T
~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
Bq; q; q; q; q;T q; q; q; q; q;s$   A! !A+*A+/A6 6B ?B 