B
    Y0dd              	   @   s   d dl mZ d dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ ejdd Zedejdd	d
dddgdd ZeedddZedejdddgdd Zededdd Zeddd ZdS )    )BytesION)	DataFrame
date_rangeread_csv
read_excel	read_jsonread_parquet)_test_decoratorsc                sN   ddl m}m} |j  t  dd  _G  fddd|}| d|  S )z"Emulate GCS using a binary buffer.r   )AbstractFileSystemregistryc               S   s   dS )NT r   r   r   J/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/io/test_gcs.py<lambda>       zgcs_buffer.<locals>.<lambda>c                   s    e Zd Z fddZdd ZdS )z%gcs_buffer.<locals>.MockGCSFileSystemc                 s     d  S )Nr   )seek)argskwargs)
gcs_bufferr   r   open!   s    
z*gcs_buffer.<locals>.MockGCSFileSystem.openc             [   s   |ddgS )Nfile)nametyper   )selfpathr   r   r   r   ls%   s    z(gcs_buffer.<locals>.MockGCSFileSystem.lsN)__name__
__module____qualname__r   r   r   )r   r   r   MockGCSFileSystem    s   r   zgcsfs.GCSFileSystem)fsspecr
   r   targetclearr   closesetattr)monkeypatchr
   r   r   r   )r   r   r      s    

	r   Zgcsfsformatcsvjsonparquetexcelmarkdownc             C   s  ddl m} |j  tddgdtjgddgtdd	d
d}d| }|dkrp|j|dd t	|dgdd}n|dkrd}|
| t|dgdd}nj|dkr|| t|dgd}nH|dkrtd || t|}n"|dkrtd || |}t|| dS )zE
    Test that many to/read functions support GCS.

    GH 33987
    r   )r         g       @tsz
2018-06-18   )periods)intfloatstrdtzgs://test/test.r&   T)indexr4   )Zparse_dates	index_colr)   zgs://test/test.xlsr'   )Zconvert_datesr(   Zpyarrowr*   tabulateN)r   r   r    r!   r   npnanr   to_csvr   Zto_excelr   to_jsonr   pytestZimportorskip
to_parquetr   Zto_markdowntmassert_frame_equal)r   r%   r   df1r   Zdf2r   r   r   test_to_read_gcs.   s6    









rA   )resultexpectedc             C   s<   | dd |dd kst | dd |dd ks8t dS )z
    We would like to assert these are equal, but the 10th and 11th bytes are a
    last-modified timestamp, which in some builds is off-by-one, so we check around
    that.

    See https://en.wikipedia.org/wiki/ZIP_(file_format)#File_headers
    N	      )AssertionError)rB   rC   r   r   r   assert_equal_zip_safe[   s    rG   encodingzutf-8cp1251c             C   s  ddl m} |j  t }d|i}|dkr6d|d< t }|j|||dd d	}|j|||d
 |  }| }	t	||	 t
|d||d}
t||
 |dkrd}d|d< |d| 7 }|j|||d
 |  }| }	t	||	 t
|dd|d}
t||
 dS )z
    Compression and encoding should with GCS.

    GH 35677 (to_csv, compression), GH 26124 (to_csv, encoding), and
    GH 32392 (read_csv, encoding)
    r   )r   methodgzipr+   mtimewb)compressionrH   modezgs://test/test.csv)rN   rH   )r6   rN   rH   gzZinfer.N)r   r   r    r!   r>   ZmakeDataFramer   r:   getvaluerG   r   r?   )r   Zcompression_onlyrH   r   ZdfrN   bufferZpath_gcsresrC   Zread_dfr   r   r   $test_to_csv_compression_encoding_gcsg   s4    	


rU   fastparquetc                sx   ddl m}m} |j  tddgdtjgddgtdd	d
d}G  fddd|}| 	d| |j
ddddd dS )zCRegression test for writing to a not-yet-existent GCS Parquet file.r   )r
   r   r+   r,   g       @r-   r.   z
2018-06-18r/   )r0   )r1   r2   r3   r4   c                   s   e Zd Zd fdd	ZdS )z7test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystemrc                s    d|krt ttj d|S )Nwztest.parquet)FileNotFoundErrorr   osr   join)r   r   rO   r   )tmpdirr   r   r      s    z<test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystem.openN)rW   )r   r   r   r   r   )r\   r   r   r      s   r   zgcsfs.GCSFileSystemzgs://test/test.csvTrV   N)r5   ZenginerN   )r   r
   r   r    r!   r   r8   r9   r   r#   r=   )r$   r\   r
   r   r@   r   r   )r\   r   test_to_parquet_gcs_new_file   s    
r]   c            	   C   s"   t t td W d Q R X d S )Nzgs://test/test.csv)r>   Zexternal_error_raisedImportErrorr   r   r   r   r   test_gcs_not_present_exception   s    r_   )ior   rZ   numpyr8   r<   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingr>   Zpandas.utilr	   tdZfixturer   Z
skip_if_nomarkZparametrizerA   bytesrG   rU   r]   Zskip_if_installedr_   r   r   r   r   <module>   s    ",/