
    dX                     J   d Z ddlZddlmZ ddlZddlZddlm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 ddlmc 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(         e
j)        de
j*        +                    e' p ed          dk    d                     e
j)        de
j*        +                    e$ d                    g          d             Z,e
j(        d             Z-e
j(        d             Z.e
j(        d             Z/e
j(        d             Z0e
j(        d             Z1 e
j(        ej        2                    ej3        j4                  ej        2                    ej3        j5                  ej        2                    ej3        j6                  ej        7                    dd          ej        7                    dd          ej        7                    dd          ej        7                    dd          g          d              Z8	 	 	 	 	 	 	 	 	 d4d"Z9d# Z:d$ Z;d% Z<d& Z=d' Z>d( Z?d) Z@d* ZAd+ ZB G d, d-          ZC G d. d/eC          ZD G d0 d1eC          ZE G d2 d3eC          ZFdS )5z test parquet compat     N)BytesIO)catch_warnings)
get_option)is_platform_windows)pa_version_under7p0pa_version_under8p0)Version)FastParquetImplPyArrowImpl
get_engineread_parquet
to_parquetTFfastparquetmode.data_managerarrayz4fastparquet is not installed or ArrayManager is usedreason)markspyarrowpyarrow is not installed)paramsc                     | j         S Nparamrequests    X/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/io/test_parquet.pyenginer   3   s    $ =    c                  <    t           st          j        d           dS )Nr   r   )_HAVE_PYARROWpytestskip r    r   par&   H   s      0.///9r    c                      t           st          j        d           n't          d          dk    rt          j        d           dS )Nzfastparquet is not installedr   r   z.ArrayManager is not supported with fastparquetr   )_HAVE_FASTPARQUETr#   r$   r   r%   r    r   fpr)   O   sI     F23333	'	(	(G	3	3DEEE=r    c                  4    t          j        g ddd          S )N         fooAB)pd	DataFramer%   r    r   	df_compatr5   X   s    <iiie44555r    c            
          t          j        t          d          t          t          dd                    t	          j        ddd          g dt          j        d	d
          d          } | S )Nabcr,            @      @float64dtypeTFT20130101r.   periods)abdef)r3   r4   listrangenparange
date_range)dfs    r   df_cross_compatrM   ]   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	          t          j	        d          t           j
        t          j	        d          gd          S )Nr7   rB   crB   NrO   )   foo   bars   bazr/   barbazr,   r8   r.      u1r9   r:   r;   r<          @      @r>   r?   r@   20130103)stringstring_with_nanstring_with_nonebytesunicodeintuintfloatfloat_with_nanbooldatetimedatetime_with_nat)r3   r4   rG   rI   nanrH   rJ   astyperK   	TimestampNaTr%   r    r   df_fullrk   o   s    <5kk #RVS1 0 0 0---,,,a$$IaOO**400YsCy999"BFC0'''j!<<<Z((Z(("	
 	
  r    z2019-01-04T16:41:24+0200z%Y-%m-%dT%H:%M:%S%zz2019-01-04T16:41:24+0215z2019-01-04T16:41:24-0200z2019-01-04T16:41:24-0215c                     | j         S r   r   r   s    r   timezone_aware_date_listrm      s     =r    r-   c
                      pddipi  |r
|d<   |d<    fd}
9t          j                    5  |
|	           ddd           dS # 1 swxY w Y   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
    compressionNr   c                     t          |           D ]^} j        fi 
 t          d          5  t          fi 	}d d d            n# 1 swxY w Y   t	          j        |           _d S )NTrecord)check_names
check_likecheck_dtype)rH   r   r   r   tmassert_frame_equal)repeat_actualru   rt   rs   rL   expectedpathread_kwargswrite_kwargss      r   comparez!check_round_trip.<locals>.compare   s    v 	 	ABM$//,///t,,, ; ;%d::k::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; !'%'    	 	s   AA	A	)rv   ensure_clean)rL   r   r|   r~   r}   r{   rs   rt   ru   rx   r   s   ` ```````  r   check_round_tripr      s   D  8M4#8L#K '!'X &H            |_ 	$GFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA!$A!c                 P   t           rjddlm} |                    | d          }t	          |j        j                  t	          |          k    sJ |j        j        t          |          k    sJ dS 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   NF)validate_schemahive)partitioning)r   pyarrow.parquetparquetParquetDatasetlen
partitionspartition_namessetpyarrow.datasetdatasetr   schemanames)r|   r{   pqr   dss        r   check_partition_namesr      s      
=$$$$$$##D%#@@7%566#h--GGGG!1S]]BBBBBB$$$$$$**T*77#*0H<<<<<<r    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'matchr/   rT   )r#   raises
ValueErrorr   )r5   msgs     r   test_invalid_enginer      s    
:C	z	-	-	- 2 2E51112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   =AAc                     t          j        dd          5  t          |            d d d            d S # 1 swxY w Y   d S )Nio.parquet.enginer   r3   option_contextr   )r5   r&   s     r   test_options_pyr      s     
	.		:	: $ $###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $   377c                     t          j        dd          5  t          |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   )r5   r)   s     r   test_options_fpr      s     
	.	>	> $ $###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $r   c                     t          j        dd          5  t          |            d d d            d S # 1 swxY w Y   d S )Nr   autor   )r5   r)   r&   s      r   test_options_autor     s     
	.	7	7 $ $###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $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   )
isinstancer   r   r
   r3   r   )r)   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   z%Missing optional dependency .pyarrow.z. or newer of .fastparquet.z)Missing optional dependency .fastparquet.)pandas.compat._optionalr   getr"   r	   r   __version__r(   r   r#   r   ImportErrorr   )r   
pa_min_ver
fp_min_verhave_pa_bad_versionhave_fp_bad_versionhave_usable_pahave_usable_fpr   s           r   "test_get_engine_auto_error_messager     s    1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"""# # # # # # # # # # # # # # # <E{%888 # #6"""# # # # # # # # # # # # # # #  	#W
WWWE{%888 # #6"""# # # # # # # # # # # # # # # # # # @E{%888 # #6"""# # # # # # # # # # # # # # # # # ### # # #sH   C00C47C4D55D9<D9#F  FF*GGGc                 @   | }t          j                    5 }|                    ||d            t          ||          }t          j        ||           t          ||ddg          }t          j        ||ddg                    d d d            d S # 1 swxY w Y   d S )Nr   ro   r   rB   rD   r   columns)rv   r   r   r   rw   rM   r&   r)   rL   r|   results         r   test_cross_engine_pa_fpr   H  s     
B			 6d
d24888d2...
fb)))d2SzBBB
fb#sn5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   A0BBBc                    | }t          j                    5 }|                    ||d            t          d          5  t	          ||          }t          j        ||           t	          ||ddg          }t          j        ||ddg                    d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   Trq   r   rB   rD   r   )rv   r   r   r   r   rw   r   s         r   test_cross_engine_fp_par   V  sL   	B			 :d
d248884((( 	: 	:!$r222F!&"---!$rC:FFFF!&"c3Z.999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:: : : : : : : : : : : : : : : : : :s5   )B;AB#B;#B'	'B;*B'	+B;;B?B?c                   t    e Zd Zd Zd Zej        j         ej        dd          d                         Z	dS )Basec                     t          j                    5 }t          j        ||          5  t	          |||d            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   ro   )rv   r   r#   r   r   )selfrL   r   excerr_msgr|   s         r   check_error_on_writezBase.check_error_on_writee  s    _ 	?$s'222 ? ?2tV>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s3   A#AA#A	A#A	A##A'*A'c                     t          j                    5 }t          j        |          5  t          |||d            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   )rv   r   external_error_raisedr   )r   rL   r   r   r|   s        r   check_external_error_on_writez"Base.check_external_error_on_writek  s    _ 	?$)#.. ? ?2tV>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s3   A!A	A!	A	A!A	A!!A%(A%dhttps://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/parquet/simple.parquetT)urlcheck_before_testc                     |dk    rt          j        |           d}t          |          }t          j        ||           d S )Nr   r   )r#   importorskipr   rv   rw   )r   r5   r   r   rL   s        r   test_parquet_read_from_urlzBase.test_parquet_read_from_urlq  sR     V'''? 	 #
b),,,,,r    N)
__name__
__module____qualname__r   r   r#   marknetworkrv   r   r%   r    r   r   r   d  s}        ? ? ?? ? ? [RZ?   - -  - - -r    r   c                   8   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ej                            ed          d             Zej                            dg d          d             ZdS )	TestBasicc                     t          j        g d          ddt          j        d          t          j        g d          fD ]!}d}|                     ||t          |           "d S )Nr+   r,   r/   r?   z+to_parquet only supports IO with DataFrames)r3   Seriesri   rI   r   r   r   )r   r   objr   s       r   
test_errorzTestBasic.test_error  s{    Iiii  L$$HYYY
 	D 	DC @C%%c6:sCCCC	D 	Dr    c           	          t          j        t          d          t          t          dd                    d          }ddg|_        t          ||           d S )Nr7   r,   r8   r[   r`   r/   rT   )r3   r4   rG   rH   r   r   )r   r   rL   s      r   test_columns_dtypeszTestBasic.test_columns_dtypes  sR    \T%[[eAqkk9J9JKKLL U^
V$$$$$r    ro   )Ngzipsnappybrotlic                     |dk    rt          j        d           n|dk    rt          j        d           t          j        dg di          }t	          ||d|i           d S )Nr   r   r1   r+   ro   r~   )r#   r   r3   r4   r   )r   r   ro   rL   s       r   test_compressionzTestBasic.test_compression  su    (""))))H$$)))\3			*++V=+2NOOOOOOr    c           	          t          j        t          d          t          t          dd                    d          }t          j        dt          d          i          }t	          |||ddgi           d S )Nr7   r,   r8   r   r[   r   r{   r}   )r3   r4   rG   rH   r   )r   r   rL   r{   s       r   test_read_columnszTestBasic.test_read_columns  sz    \T%[[eAqkk9J9JKKLL<4;; 788	H:7N	
 	
 	
 	
 	
 	
r    c                    |dk    }t          j        dg di          }t          ||           g dt          j        dd          t	          d          g d	g}|D ]T}||_        t          |t           j                  r|j                            d           |_        t          |||
           Ug d|_        d|j        _	        t          ||           d S )Nr   r1   r+   )r-   r.   r8   r?   r.   r@   r7   )r,   r.   r8   )rs   )r   r,   r-   r/   )
r3   r4   r   rK   rG   indexr   DatetimeIndex
_with_freqname)r   r   rs   rL   indexesr   s         r   test_write_indexzTestBasic.test_write_index  s    -\3			*++V$$$ IIM*a000KKII	
  	B 	BEBH%!122 58..t44R[AAAAA 99V$$$$$r    c                     |}t          j        dg di          }t           j                            g d          }||_        t          ||           d S )Nr1   r+   )rB   r,   )rB   r-   )rC   r,   )r3   r4   
MultiIndexfrom_tuplesr   r   )r   r&   r   rL   r   s        r   test_write_multiindexzTestBasic.test_write_multiindex  sX    \3			*++))*H*H*HIIV$$$$$r    c           	         |}t          j        ddd          }t          j        t          j                            dt          |          z  d          t          d                    }t           j        	                    d	d
g|gddg          }|
                    d           }||fD ]8}||_        t          ||           t          ||dddgi|ddg                    9d S )Nz01-Jan-2018z01-Dec-2018MS)freqr-   r.   ABCr   Level1Level2leveldate)r   r   r1   r2   r}   r{   )r3   rK   r4   rI   randomrandnr   rG   r   from_productcopyr   r   )r   r&   r   datesrL   index1index2r   s           r   test_multiindex_with_columnsz&TestBasic.test_multiindex_with_columns  s   m]FFF\")//!c%jj.!<<d5kkRRR++!5)'61B , 
 
 4((f% 	 	EBHR(((FS#J(?"cSVZ.    		 	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 )Nr+   )qrs)rB   rC   F)ro   r   T)dropr~   r{   )zyxwvutsrr   rT   rT   rU   rU   r/   r/   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  )r3   r4   reset_indexr   rG   rH   )r   r   rL   r~   r{   arrayss         r   test_write_ignoring_indexz#TestBasic.test_write_ignoring_index  s=    \			@@AA'+e<< >>t>,,V,RRRR \))///22:O:O:O
 
 
 	V,RRRR EDDDDD
 \qNN+A+Aa+A+A+ABB&
 
 
 >>t>,,V,RRRRRRr    c                 *   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   r8   r.   r   r   Column name must be a stringr   )
r3   r   r   r4   rI   r   r   r   	TypeErrorr   )r   r   
mi_columnsrL   s       r   test_write_column_multiindexz&TestBasic.test_write_column_multiindex  s    ]../M/M/MNN
\")//!Q//DDD]""%%FI'E     y  R((((( ! r    c                 |   g dg dg}t          j        t          j                            dd          |          }ddg|j        _        |dk    rSt          t          j	                  t          d          k     rt          }nt          }|                     |||d	           d S |d
k    rt          ||           d S d S )Nr  )r,   r-   r,   r-   r,   r-   r,   r-   r  r   r   r   r   z0.7.0zColumn namer   )r3   r4   rI   r   r   r   r   r	   r   r   r  r   r   r   )r   r   r  rL   errs        r   &test_write_column_multiindex_nonstringz0TestBasic.test_write_column_multiindex_nonstring  s    
 EDD$$$
 \")//!Q//@@@$h/
]""{.//''2B2BBB %%b&#}EEEEEy  R((((( ! r    c                     |}g dg dg}t          j        t          j                            dd          |          }ddg|j        _        t          ||           d S )Nr  r  r  r   	ColLevel1	ColLevel2)r3   r4   rI   r   r   r   r   r   r   r&   r   r  rL   s        r   #test_write_column_multiindex_stringz-TestBasic.test_write_column_multiindex_string  sp      EDDDDD
 \")//!Q//@@@'5
V$$$$$r    c                     |}g d}t          j        t          j                            dd          |          }d|j        _        t          ||           d S )N)rT   rU   r/   r  r  r8   r   	StringCol)r3   r4   rI   r   r   r   r   r   r(  s        r   test_write_column_index_stringz(TestBasic.test_write_column_index_string*  sY      .--\")//!Q//@@@%
V$$$$$r    c                     g d}t          j        t          j                            dd          |          }d|j        _        |dk    r|                     ||t          d           d S t          ||           d S )Nr,   r-   r.   r8   r  r8   r   NonStringColr   r  )
r3   r4   rI   r   r   r   r   r   r  r   )r   r   r  rL   s       r   !test_write_column_index_nonstringz+TestBasic.test_write_column_index_nonstring6  s     \")//!Q//@@@(
]""%%FI'E     R(((((r    zminimum pyarrow not installedr   c                    dd l m} |dk    r:t          j                            d          }|j                            |           t          j        t          j	        g dd          t          j	        g dd          t          j	        g d          t          j	        g d	          t          j	        g d
d          t          j	        g dd          t          j	        g dd          d          }t          j                    5 }|                    ||           t          ||          }t          ||d          }d d d            n# 1 swxY w Y   |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 )Nr   r   z.Fastparquet nullable dtype support is disabledr   r,   r-   r.   Nint64uint8)rB   rC   rO   N)TFTNr.  )      ?rX   rY   Nfloat32r;   )rB   rC   rO   rD   rE   rF   gr   numpy_nullabler   dtype_backendrB   Int64r<   UInt8r[   booleanFloat32Float64rO   r,   )axis)r   r   r#   r   xfailnode
add_markerr   tabler   rv   r   write_tabler   r=   rI   r3   r4   r
  rw   )
r   r   r   r   r   rD  r|   result1result2r{   s
             r   test_dtype_backendzTestBasic.test_dtype_backendD  s   $$$$$$]"" ;$$G %  D L##D)))]???G<<]???G<<]#8#8#899]#<#<#<==]<<<99]#8#8#8)DD]#8#8#8)DD
 

 
 _ 	X$NN5$'''"4777G"4FVWWWG		X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	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0s   :EEEr=   )	r;  r<  r=  objectzdatetime64[ns, UTC]rb   z	period[D]r?  r[   c                     t          j        dt          j        g |          i          }d }|dk    r*t          j        dt          j        g d          i          }t          ||ddi|           d S )Nvaluer<   rb   r?  r:  r8  r   )r3   r4   r   r   )r   r&   r=   rL   r{   s        r   test_read_empty_arrayzTestBasic.test_read_empty_arrayv  s      \"E222
 
 G|RXb	::: H
 	2B Ch	
 	
 	
 	
 	
 	
r    N)r   r   r   r   r   r#   r   parametrizer   r   r   r   r  r  r!  r$  r)  r,  r0  skipifr   rH  rL  r%   r    r   r   r     s       	D 	D 	D% % % [],N,N,NOOP P POP
 
 
% % %0% % %   S S S@
) 
) 
)) ) )&% % %
% 
% 
%) ) ) [+4STT/1 /1 UT/1b [
	
 
	
 
	
 
 
 
 
 
r    r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	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          e
j                            ddgg g          d                                     Z ej        d          d             Z ej        d          d             Zd Zd Ze
j                            d
ed gddg          d             Zd Zd Z  ej        d          d             Z! ej        d          d              Z" ej        d          d!             Z#d" Z$d# Z% ej        d          d$             Z&d% Z'd& Z(d' Z)d( Z*d) Z+d*S )+TestParquetPyArrowc                     |}t          j        ddd          }|                    d           }||d<   g d|d<   t          ||           d S )Nr?   r.   Europe/BrusselsrA   tzdatetime_tzTNTbool_with_none)r3   rK   r   r   )r   r&   rk   rL   dtis        r   
test_basiczTestParquetPyArrow.test_basic  sb     mJ6GHHHnnT""=111R     r    c                 |    |}t          j        ddd          |d<   t          |||ddg         dddgi	           d S )
Nr?   r.   rR  rS  rU  r[   r`   r   r   )r3   rK   r   )r   r&   rk   rL   s       r   test_basic_subset_columnsz,TestParquetPyArrow.test_basic_subset_columns  sf     M*aDUVVV=5)*"Xu$56		
 	
 	
 	
 	
 	
r    c                     |                     |          }t          |t                    sJ t          |          }t	          |          }t          j        ||           d S )Nr   )r   r   r^   r   r   rv   rw   )r   r&   rk   	buf_bytes
buf_streamress         r   *test_to_bytes_without_path_or_buf_providedz=TestParquetPyArrow.test_to_bytes_without_path_or_buf_provided  sc     &&b&11	)U+++++Y''
:&&
gs+++++r    c                     t          j        t          j        d                              dd          t          d                                                    }|                     ||t          d           d S )N   r8   r.   aaar   zDuplicate column names found	r3   r4   rI   rJ   reshaperG   r  r   r   r   r&   rL   s      r   test_duplicate_columnsz)TestParquetPyArrow.test_duplicate_columns  sa    \")B--//155tE{{KKKPPRR!!"b*6TUUUUUr    c                     t          j        dt          j        dd          i          }t          r|                     ||t
                     d S t          ||           d S )NrB   1 dayr.   r@   )r3   r4   timedelta_ranger   r   NotImplementedErrorr   rf  s      r   test_timedeltaz!TestParquetPyArrow.test_timedelta  sc    \3 27A F F FGHH 	%..r27JKKKKKR$$$$$r    c                 x    t          j        dg di          }|                     ||t          j                   d S )NrB   rB   r,   rX   )r3   r4   r   r   ArrowExceptionrf  s      r   test_unsupportedz#TestParquetPyArrow.test_unsupported  s=    \3.// 	**2r73IJJJJJr    c                     t          j        ddt           j                  }t          j        |dg          }|                     ||t          j                   d S )Nr-   
   r<   fp16datar   )rI   rJ   float16r3   r4   r   r   ro  )r   r&   ru  rL   s       r   test_unsupported_float16z+TestParquetPyArrow.test_unsupported_float16  sS     yBbj111\tfX666**2r73IJJJJJr    zqPyArrow does not cleanup of partial files dumps when unsupported dtypes are passed to_parquet function in windowsr   	path_typec                    t          j        ddt           j                  }t          j        |dg          }t          j                    5 } ||          }t          j        t          j	                  5  |
                    ||           d d d            n# 1 swxY w Y   t          j                            |          rJ 	 d d d            d S # 1 swxY w Y   d S )Nr-   rr  r<   rs  rt  )r|   r   )rI   rJ   rv  r3   r4   rv   r   r   r   ro  r   osr|   isfile)r   r&   rx  ru  rL   path_strr|   s          r    test_unsupported_float16_cleanupz3TestParquetPyArrow.test_unsupported_float16_cleanup  sL    yBbj111\tfX666_ 	,(9X&&D)'*@AA 4 443334 4 4 4 4 4 4 4 4 4 4 4 4 4 4w~~d++++++		, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s6   *C6BCB	C!B	"$CCCc                 .   t          j                    }t          j        t          d                    |d<   t          j        g dt          j        g d                    |d<   t          j        g dg dd	
          |d<   t          ||           d S )NabcdefrB   )rT   r/   r/   rT   NrT   rS   r<   rC   )rB   rC   rO   rB   rO   rC   )rC   rO   rD   T)
categoriesorderedrO   )r3   r4   CategoricalrG   CategoricalDtyper   rf  s      r   test_categoricalz#TestParquetPyArrow.test_categorical  s    \^^.h003 .555%&;&;&;<<
 
 
3 .***PT
 
 
3 	R     r    c                 x    t          j        d          } |j        di |}d|i}t          ||d||           d S )Ns3fs
filesystemzpandas-test/pyarrow.parquetr|   r}   r~   r%   )r#   r   S3FileSystemr   )r   r5   s3_resourcer&   s3sor  s3kws           r   test_s3_roundtrip_explicit_fsz0TestParquetPyArrow.test_s3_roundtrip_explicit_fs  sd    "6**T&&&&B.	
 	
 	
 	
 	
 	
r    c                 6    d|i}t          ||d||           d S )Nstorage_optionsz s3://pandas-test/pyarrow.parquetr  r   )r   r5   r  r&   r  s        r   test_s3_roundtripz$TestParquetPyArrow.test_s3_roundtrip  s>     "4(3	
 	
 	
 	
 	
 	
r    r  partition_colr1   c                    |                                 }|rX|                    t                              |t          j                            }d}||                             |          ||<   t          |||dd|i|d |ddd           d S )Ncategoryzs3://pandas-test/parquet_dirr  )partition_colsro   r  Tr,   )r{   r|   r}   r~   rt   rx   )r  rh   dictfromkeysrI   int32r   )r   r5   r  r&   r  r  expected_dfpartition_col_types           r   test_s3_roundtrip_for_dirz,TestParquetPyArrow.test_s3_roundtrip_for_dir  s      nn&&  	%,,T]]="(-S-STTK!+)4])C)J)J"* *K& 	 /*D1"/##' 
 	
 	
 	
 	
 	
 	
r    r   c                     t                      }|                    |           t          |          }t          j        ||           d S r   )r   r   r   rv   rw   )r   r5   bufferdf_from_bufs       r   test_read_file_like_obj_supportz2TestParquetPyArrow.test_read_file_like_obj_support>  sE    V$$$"6**
i55555r    c                 t   |                     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 )NHOMETestingUserUSERPROFILEz.*TestingUser.*r   z~/file.parquet)setenvr#   r   OSErrorr   r   )r   r5   monkeypatchs      r   test_expand_userz#TestParquetPyArrow.test_expand_userE  s7   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$   A$$A(+A(
B--B14B1c                     ddg}|}|                     ||d            t          ||           t          |          j        |j        k    sJ d S )Nrd   r`   r  ro   r   r   r   shape)r   tmp_pathr&   rk   r  rL   s         r   test_partition_cols_supportedz0TestParquetPyArrow.test_partition_cols_supportedN  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 )Nrd   r  r  )r   r  r&   rk   r  partition_cols_listrL   s          r   test_partition_cols_stringz-TestParquetPyArrow.test_partition_cols_stringV  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    r[   zpathlib.Path)idsc                     d}|g}|} ||          }|                     ||           t          |          j        |j        k    sJ d S )Nr2   )r  )r   r   r  )	r   r  r&   r5   rx  r  r  rL   r|   s	            r   test_partition_cols_pathlibz.TestParquetPyArrow.test_partition_cols_pathlib_  sa     -.y""
d+>???D!!'28333333r    c                 R    t          j        g g           }t          ||           d S )N)r   r   )r3   r4   r   rf  s      r   test_empty_dataframez'TestParquetPyArrow.test_empty_dataframem  s,    \B///R     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  r,   )typer   r  )	r   r3   r4   r   fieldbool_rh   rd   r   )r   r&   r   rL   r   out_dfs         r   test_write_with_schemaz)TestParquetPyArrow.test_write_with_schemar  s    \3A-((s!I!I!I JKK4Rx.@6RRRRRRr    c                 R   t          j        t          j        g dd          t          j        g dd          t          j        g dd          d          }t          ||           t          j        dt          j        g d	d          i          }t          ||           d S )
Nr+   r;  r<   UInt32rP   r[   rB   rC   rO   rB   r2  )r3   r4   r   r   rf  s      r    test_additional_extension_arraysz3TestParquetPyArrow.test_additional_extension_arraysz  s     \Yyyy888Yyyy999Y///x@@@ 
 
 	R   \3	/// I I IJKKR     r    c           
         t          j        dt          j        g dd          i          }t          j        d|          5  t	          |||                    d| d                     d d d            d S # 1 swxY w Y   d S )	NrB   rP   zstring[pyarrow]r<   string_storagezstring[]r{   )r3   r4   r   r   r   rh   )r   r&   r  rL   s       r    test_pyarrow_backed_string_arrayz3TestParquetPyArrow.test_pyarrow_backed_string_array  s     \3	*:*:*:BS T T TUVV/@@ 	V 	VRbii8S.8S8S8S.T.TUUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   *A99A= A=c                 "   t          j        t           j                            g d          t          j        ddd          t           j                            t          j        ddd                    d          }t          ||           d S )N))r   r,   )r,   r-   )r.   r8   z
2012-01-01r.   D)rA   r   r8   )rO   rD   rE   )r3   r4   IntervalIndexr   period_rangefrom_breaksrK   r   rf  s      r   test_additional_extension_typesz2TestParquetPyArrow.test_additional_extension_types  s     \%112J2J2JKK_\13GGG%11M,DDD 	 	
 	
 	R     r    c                     t           sd}nd}t          j        dt          j        ddd          i          }t	          ||d|i	           d S )
Nz2.6z2.0rB   z
2017-01-011nrr  r   rA   versionr   )r   r3   r4   rK   r   )r   r&   verrL   s       r   test_timestamp_nanosecondsz-TestParquetPyArrow.test_timestamp_nanoseconds  s]     # 	CCC\3lr R R RSTTRy#.>??????r    c                    t           sR|j        t          j        j        k    r8|j                            t          j        	                    d                     d|gz  }t          j        |d|i          }t          ||d           d S )Nzitemporary skip this test until it is properly resolved: https://github.com/pandas-dev/pandas/issues/37286r      index_as_colr   ru  F)ru   )r   tzinfore   timezoneutcrB  rC  r#   r   rA  r3   r4   r   )r   r   r&   rm   idxrL   s         r   test_timezone_aware_indexz,TestParquetPyArrow.test_timezone_aware_index  s    #		(/83D3HHHL##!!H "     +,,\>3*?@@@ 	RU333333r    c           	      <   t          j        dt          t          dd                    i          }t	          j                    5 }|                    ||           t          ||dgd          }d d d            n# 1 swxY w Y   t          |          dk    sJ d S )NrB   r   r.   rB   z==r   F)filtersuse_legacy_datasetr,   )	r3   r4   rG   rH   rv   r   r   r   r   )r   r&   rL   r|   r   s        r   test_filter_row_groupsz)TestParquetPyArrow.test_filter_row_groups  s     \3U1a[[ 1 1233_ 	$MM$###!b>"2u  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 6{{as   +A<<B B c                    t          j        t          j                            dd          g d          }t          j                    5 }|                    ||           t          ||          }d d d            n# 1 swxY w Y   |r-t          |j
        t           j        j        j                  sJ d S t          |j
        t           j        j        j                  sJ d S )Nrr  r.   )r1   r2   Cr   )r3   r4   rI   r   r   rv   r   r   r   r   _mgrcore	internalsArrayManagerBlockManager)r   r&   using_array_managerrL   r|   r   s         r   test_read_parquet_managerz,TestParquetPyArrow.test_read_parquet_manager  s   \")//"a00///JJJ_ 	,$MM$###!$++F	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,  	Kfk27+<+IJJJJJJJfk27+<+IJJJJJJJs   
'A==BBc                    dd l }|}t          j        ddd          }|                    d           }||d<   g d|d<   |j                            |          }|                    t          j        	          }|d
                             d          |d
<   |d                             d          |d<   |d                             t          j         |j	        dd                              |d<   t          ||ddi|           d S )Nr   r?   r.   rR  rS  rU  rV  rW  )types_mapperre   ztimestamp[us][pyarrow]rf   us)unitrT  r:  r   r   r}   r{   )r   r3   rK   r   Tablefrom_pandas	to_pandas
ArrowDtyperh   	timestampr   )r   r&   rk   r   rL   rX  pa_tabler{   s           r   &test_read_dtype_backend_pyarrow_configz9TestParquetPyArrow.test_read_dtype_backend_pyarrow_config  s:    mJ6GHHHnnT""=111=,,R00%%2=%AA'
3::;STT(01D(E(L(L$)
 )
$% #+="9"@"@M+'+:KLLLMM#
 #
 	()4		
 	
 	
 	
 	
 	
r    c                 J   t          j        dddgit          j        ddgd          d	          }|                                }d
d l}t          |j                  t          d          k    r|j                            d          |_        t          ||ddi|           d S )NrB   r,   r-   r.   r8   testr   zint64[pyarrow])r   r=   r   z11.0.0r:  r   r  )
r3   r4   Indexr  r   r	   r   r   rh   r   )r   r&   rL   r{   r   s        r   ,test_read_dtype_backend_pyarrow_config_indexz?TestParquetPyArrow.test_read_dtype_backend_pyarrow_config_index  s    \1a&M1a&v!>!>!>FV
 
 
 77997&'''(*;*;;;%^223CDDHN()4		
 	
 	
 	
 	
 	
r    c           	         t          j        t          d          t          t          dd                    d          }ddg|_        t          ||           ddg|_        t          j        t          d	          5  t          ||           d d d            n# 1 swxY w Y   t          j	        d
dddd          t          j	        d
dddd          g|_        t          ||           d S )Nr7   r,   r8   r   r   rQ   rR   z|S3r     )
r3   r4   rG   rH   r   r   r#   r   rk  re   rf  s      r   test_columns_dtypes_not_invalidz2TestParquetPyArrow.test_columns_dtypes_not_invalid	  s$   \T%[[eAqkk9J9JKKLL V
R    f%
].e<<< 	% 	%R$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% dAq!Q//dAq!Q//

 	R     s   =BB!Bc                 |    t          j        t          j        g dd                    }t          ||           d S )Nr  custom namer  r  r3   r4   r  r   rf  s      r   test_empty_columnsz%TestParquetPyArrow.test_empty_columns  s=    \} M M MNNNR     r    N),r   r   r   rY  r[  r`  rg  rl  rp  rw  r#   r   rA  r   rM  strpathlibPathr}  r  
single_cpur  r  td
skip_if_nor  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%   r    r   rP  rP    s       	! 	! 	!
 
 
	, 	, 	,V V V
% % %K K KK K K [?    [[3*=>>, , ?> ,! ! !$ [

 

 

 [	
 	
 	
 [R]6[E	
 
 
   
< R]96 6 6 R]93 3 38 8 88 8 8 [c;;'h-G   	4 	4 	4! ! !
S S S R]9! ! ! R]9V V V R]9! ! !	@ 	@ 	@4 4 42 R]9     
K 
K 
K
 
 
:
 
 
 ! ! !(! ! ! ! !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S )TestParquetFastParquetc                     |}t          j        ddd          }|                    d           }||d<   t          j        dd          |d<   t	          ||           d S )	Nr?   r.   z
US/EasternrS  rU  ri  r@   	timedelta)r3   rK   r   rj  r   )r   r)   rk   rL   rX  s        r   rY  z!TestParquetFastParquet.test_basic$  sg    mJlCCCnnT""=,Wa@@@;R     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 )
Nr7   r,   r8   r   r  r   rQ   rR   r  )r3   r4   rG   rH   r  r   r   re   )r   r)   rL   r#  r   s        r   test_columns_dtypes_invalidz2TestParquetFastParquet.test_columns_dtypes_invalid-  s    \T%[[eAqkk9J9JKKLL, V
!!"b#s333 f%
!!"b#s333 dAq!Q//dAq!Q//

 	!!"b#s33333r    c                     t          j        t          j        d                              dd          t          d                                                    }d}|                     ||t          |           d S )Nrb  r8   r.   rc  r   z9Cannot create parquet dataset with duplicate column namesrd  r   r)   rL   r   s       r   rg  z-TestParquetFastParquet.test_duplicate_columnsB  se    \")B--//155tE{{KKKPPRRI!!"b*c:::::r    c                     t          j        dg di          }t          j        ddt          j        dgid          }t	          |||d           d S )	NrB   )TNFr5  g        rv  r<   F)r{   ru   )r3   r4   rI   rg   r   r   r)   rL   r{   s       r   test_bool_with_nonez*TestParquetFastParquet.test_bool_with_noneH  s^    \3 3 3 3455<sBFC&8 9KKK 	R(FFFFFFr    c                    t          j        dt          j        ddd          i          }|                     ||t          d            t          j        dg di          }d}|                     ||t          |           d S )NrB   2013Mr.   r  rn  z"Can't infer object conversion type)r3   r4   r  r   r   r  s       r   rp  z'TestParquetFastParquet.test_unsupportedO  s    \3S! L L LMNN!!"b*d;;; \3.//2!!"b*c:::::r    c                     t          j        dt          j        t          d                    i          }t	          ||           d S )NrB   r7   )r3   r4   r  rG   r   )r   r)   rL   s      r   r  z'TestParquetFastParquet.test_categoricalZ  s<    \3tE{{ ; ;<==R     r    c                 D   dt          t          dd                    i}t          j        |          }t	          j                    5 }|                    ||d d           t          ||dg          }d d d            n# 1 swxY w Y   t          |          dk    sJ d S )NrB   r   r.   r,   )ro   row_group_offsetsr  )r  )	rG   rH   r3   r4   rv   r   r   r   r   )r   r)   rD   rL   r|   r   s         r   r  z-TestParquetFastParquet.test_filter_row_groups^  s    $uQ{{##$\!___ 	F$MM$MJJJ!$^4DEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 6{{as   -B  BBc           	      8    t          ||dd|id |d           d S )Nz$s3://pandas-test/fastparquet.parquetr  )ro   r  r  r  )r   r5   r  r)   r  s        r   r  z(TestParquetFastParquet.test_s3_roundtripf  sA     	7*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 )Nrd   r`   r   r   r  ro   r   Fr-   	r   rz  r|   existsr   ParquetFiler  catsr   r   r  r)   rk   r  rL   r   actual_partition_colss           r   r  z4TestParquetFastParquet.test_partition_cols_supportedq  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 )Nrd   r   r  r   Fr,   r  r"  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 )Nrd   r`   r   )r   ro   partition_onr   Fr-   r  r"  s           r   test_partition_on_supportedz2TestParquetFastParquet.test_partition_on_supported  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 )Nrd   r`   zYCannot use both partition_on and partition_cols. Use partition_cols for partitioning datar   r   )r   ro   r&  r  )r#   r   r   r   )r   r  r)   rk   r  rL   r   s          r   3test_error_on_using_partition_cols_and_partition_onzJTestParquetFastParquet.test_error_on_using_partition_cols_and_partition_on  s     !%  	 ]:S111 	 	MM$ +-    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                 x    t          j                    }|                                }t          |||           d S )Nr  )r3   r4   r  r   r  s       r   r  z+TestParquetFastParquet.test_empty_dataframe  s5    \^^7799R(333333r    c                     d|gz  }t          j        |d|i          }|                                }d|j        _        t          |||           d S )Nr  r  r  r   r  )r3   r4   r  r   r   r   )r   r)   rm   r  rL   r{   s         r   r  z0TestParquetFastParquet.test_timezone_aware_index  s[    +,,\>3*?@@@7799%R(333333r    c                 .   t          j        dddgi          }t          j                    5 }|                    |           t          j        t          d          5  t          j        t                    5  t          |dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          d          5  t          |dd	
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrB   r,   r-   z!not supported for the fastparquetr   r   T)r   use_nullable_dtypesr   r9  )r3   r4   rv   r   r   r#   r   r   assert_produces_warningFutureWarningr   )r   r)   rL   r|   s       r   &test_use_nullable_dtypes_not_supportedz=TestParquetFastParquet.test_use_nullable_dtypes_not_supported  sI   \3A-((_ 	R$MM$z1TUUU W W/>> W W mQUVVVVW W W W W W W W W W W W W W WW W W W W W W W W W W W W W W z1TUUU R RT-yQQQQR R R R R R R R R R R R R R R	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rs}   1D
B-7B
B-BB-BB-!D
-B1	1D
4B1	5D
C2&D
2C6	6D
9C6	:D

DDc                    t          j        d          5 }t          j        |                              d           t          j        t          d          5  t          |d           d d d            n# 1 swxY w Y   t          j        |          	                    d           d d d            d S # 1 swxY w Y   d S )	Ntest.parquets   breakit r   r   r   F)
missing_ok)
rv   r   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_error  s1   _^,, 	8L**:666y333 9 9T-88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 L%%%777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s6   AB6A6*B66A:	:B6=A:	>+B66B:=B:c                    t          j        ddgddgd          }t          j        d          5 }t	          |                                d          5 }|                    |           d d d            n# 1 swxY w Y   t          ||          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r,   r0   )ru  r2  wbr   )	r3   r4   rv   r   openencoder   r   rw   )r   r   rL   r|   rF   r   s         r   test_bytes_file_namez+TestParquetFastParquet.test_bytes_file_name  s1   \aV1a&99:::_^,, 	7dkkmmT** !aa   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! "$v666F		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 	fb)))))s5   #BA6*B6A:	:B=A:	>BB"%B"c           	      x   d}t          j        dt          t          dd                    i          }t	          j        d          5 }|                    |           t          j        t          |          5  t          |d           d d d            n# 1 swxY w Y   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.r`   r,   r8   ztmp.parquetr   numpy)r:  )r3   r4   rG   rH   rv   r   r   r#   r   r   r   )r   r   r   rL   r|   s        r   test_invalid_dtype_backendz1TestParquetFastParquet.test_invalid_dtype_backend  s2   % 	 \5$uQ{{"3"3455_]++ 	:tMM$z555 : :T9999: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s6   1B/9BB/B	B/B	B//B36B3c                     t          j        t          j        g dd                    }t          j        t          j        g dd                    }t          |||           d S )Nr  r  r  r  r  r  r  s       r   r  z)TestParquetFastParquet.test_empty_columns  sg    \} M M MNNN<bh]&S&S&STTTR(333333r    N)r   r   r   rY  r  rg  r  rp  r  r  r#   r   r  r  r  r  r'  r)  r  r  r0  r8  r=  r@  r  r%   r    r   r  r  #  sI       ! ! !4 4 4*; ; ;G G G	; 	; 	;! ! !      [
 
 
/ / / / / / / / /   &4 4 44 4 4	R 	R 	R8 8 8* * *	: 	: 	:4 4 4 4 4r    r  )	NNNNNTFTr-   )G__doc__re   ior   rz  r  warningsr   r?  rI   r#   pandas._configr   pandas.compatr   pandas.compat.pyarrowr   r   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr3   pandas._testing_testingrv   pandas.util.versionr	   pandas.io.parquetr
   r   r   r   r   r   r"   r   r   r(   fixturer   r   rN  r   r&   r)   r5   rM   rk   nowr  r  minmaxstrptimerm   r   r   r   r   r   r   r   r   r   r   r   r   rP  r  r%   r    r   <module>rU     s|            				  # # # # # #      % % % % % % - - - - - -        * ) ) ) ) ) ) ) )           ' ' ' ' ' '             NNNMM   MMM    +$$%%S4G)H)HG)SM %  	
 	
 	
 	+$$!!*D %  	
 	
 	
  " # "       6 6 6   "   . h/344h/344h/344""#=?TUU""#=?TUU""#=?TUU""#=?TUU
 
 
 
 
 	> > > >B= = =.2 2 2$ $ $$ $ $$ $ $F F F((# (# (#V6 6 6: : :- - - - - - - -@Q
 Q
 Q
 Q
 Q
 Q
 Q
 Q
hH! H! H! H! H! H! H! H!VL4 L4 L4 L4 L4T L4 L4 L4 L4 L4s$   A& &A0/A04A; ;BB