U
    f/e                     @   s   d dl Z d dl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
 ejdd Zejdd Zejdd Zejd	d
 Zejdd Zejdddd Ze dd ZdS )    Nread_csvc                 C   s   | ddddS )zPath to the tips datasetiodatacsvtips.csv datapathr   r   </tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/io/conftest.py	tips_file   s    r   c                 C   s   | ddddS )zPath to a JSONL datasetr   parserr   items.jsonlr   r	   r   r   r   
jsonl_file   s    r   c                 C   s   t | ddddddS )z#DataFrame with the salaries datasetr   r   r   zsalaries.csv	)sepr   r	   r   r   r   salaries_table   s    r   c                 C   s   | ddddS )Nr   r   Zfeatherzfeather-0_3_1.featherr   r	   r   r   r   feather_file    s    r   c                 C   s*   | dkrdn|  d} ddd|  diiS )Nmaster5gwclient_kwargsendpoint_urlzhttp://127.0.0.1:555/)lstrip)	worker_idr   r   r   s3so%   s    r   session)Zscopec              	   c   s*  t d t d t d}dtd_t  tj	dd tj	dd t jd	d
d t d | dkrtdn| 
d} d|  }d| d}tjtd| tjtjd}d}|dkrz||}|jrW qW n tk
r   Y nX |d8 }td q|V  |  |  W 5 Q R X dS )zZ
    Fixture for mocking S3 interaction.

    Sets up moto server in separate process
    s3fsboto3requestsTZAWS_ACCESS_KEY_IDZ
foobar_keyZAWS_SECRET_ACCESS_KEYZfoobar_secretZmotoz1.3.14)Z
minversionZflaskr   r   r   Z555zhttp://127.0.0.1:r   zmoto_server s3 -p )stdoutstderr   r   皙?N)pytestZimportorskiplogging	getLoggerdisabledtmZ!ensure_safe_environment_variablesosenviron
setdefaultr   
subprocessPopenshlexsplitDEVNULLgetok	Exceptiontimesleep	terminatewait)r   r    Zendpoint_portZendpoint_uriproctimeoutrr   r   r   s3_base+   s<    








r<   c                 #   s~  ddl }ddl}d|fd|fd|d fd|d fd	|fd
|fg fdd}d}|jd| d}|jd| d z j|d W n   Y nX z jddd W n   Y nX d}	  d s|	dkrtd |	d8 }	q|| |d |j	  |V  |jd| id}
z|
j
|dd W n   Y nX z|
j
ddd W n   Y nX d}	  d rz|	dkrztd |	d8 }	qLdS )a0  
    Sets up S3 bucket with contents

    The primary bucket name is "pandas-test". The following datasets
    are loaded.

    - tips.csv
    - tips.csv.gz
    - tips.csv.bz2
    - items.jsonl

    A private bucket "cant_get_it" is also created. The boto3 s3 resource
    is yielded by the fixture.
    r   Nz
tips#1.csvr   ztips.csv.gzz.gzztips.csv.bz2z.bz2r   zsimple_dataset.featherc              
      s8   D ].\}}t |d} j| ||d W 5 Q R X qd S )Nrb)BucketZKeyZBody)openZ
put_object)Zbucket_nameZs3_key	file_namefcliZtest_s3_filesr   r   add_tips_files{   s    z#s3_resource.<locals>.add_tips_fileszpandas-tests3)r   )r>   Zcant_get_itprivate)r>   ZACL   ZBucketsr$   r   )r   T)	recursive)r   r   resourceclientZcreate_bucketZlist_bucketsr5   r6   ZS3FileSystemZclear_instance_cacheZrm)r<   r   r   r   r   r   rD   Zbucketconnr:   rE   r   rB   r   s3_resource_   sT    

	



rL   )r&   r*   r/   r-   r5   r%   Zpandas._testingZ_testingr)   Zpandas.io.parsersr   Zfixturer   r   r   r   r   r<   rL   r   r   r   r   <module>   s*   






3