a
    Pf0                     @   s  d 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	  m
Z ddlmZ ddlmZ ddlmZ ddlmZ ejdZejjejjejdd	d
gejdddgdd Zejjejjdd Zejdd Zejjejde  G dd dZ!dS )zl
Tests parsers ability to read and parse non-local files
and hence require a network connection to be read.
    )BytesION)	DataFrame)read_featherread_csvz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningmodeexplicitinferenginepythoncc                 C   s   |dkrt d || }t|dddd| d }| j| d W d    n1 sX0    Y  | jd	 | }	|d
kr||}t|	d||d}
t|
| d S )Ntarz5TODO: Add tar salaraies.csv to pandas/io/parsers/dataioparserdatazsalaries.csvrbcontentz/salaries.csvr   	)sepcompressionr
   )	pytestskipopenserve_contentreadurlr   tmassert_frame_equal)
httpserverdatapathZsalaries_tabler   r
   Zcompression_onlyZcompression_to_extension	extensionfr   Z	url_table r#   \/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/parser/test_network.pytest_compressed_urls   s    
.r%   c                 C   sj   t |ddddd0}| j| d t| jddd	}W d   n1 sJ0    Y  |jd
 dksfJ dS )zN
    read_csv should honor the requested encoding for URLs.

    GH 10424
    r   r   r   zunicode_series.csvr   r   zlatin-1N)encodingheader)      u$   Á köldum klaka (Cold Fever) (1994))r   r   r   r   r   loc)r   r    r"   dfr#   r#   r$   test_url_encoding_csv8   s    .r,   c                 C   s   t | ddddS )z DataFrame with the tips dataset.r   r   csvtips.csvr   )r    r#   r#   r$   tips_dfF   s    r/   Zs3_resourcec                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zejjddddd Zejjddddd Zejjd d! Zejjd"d# Zd$d% Zd&d' Zd(S ))TestS3c                 C   s\   t d dD ]H\}}td|j d| ||d}t|ts@J |jrJJ t|| qd S )Ns3fs) N).gzgzip).bz2bz2s3://	/tips.csv)r   storage_options	r   importorskipr   name
isinstancer   emptyr   r   selfs3_public_bucket_with_datar/   s3soextcompr+   r#   r#   r$   test_parse_public_s3_bucketP   s    

z"TestS3.test_parse_public_s3_bucketc                 C   sH   t d td|j d|d}t|ts.J |jr8J t|| d S )Nr1   r8   r9   r:   r;   )rA   Zs3_private_bucket_with_datar/   rC   r+   r#   r#   r$   test_parse_private_s3_bucket^   s    

z#TestS3.test_parse_private_s3_bucketc                 C   sJ   t d|j dd|d}t|ts&J |jr0J t|jd d | d S )Nzs3n://r9   
   nrowsr:   r   r=   r>   r   r?   r   r   ilocrA   rB   r/   rC   r+   r#   r#   r$   test_parse_public_s3n_bucketh   s    
z#TestS3.test_parse_public_s3n_bucketc                 C   sJ   t d|j dd|d}t|ts&J |jr0J t|jd d | d S )Nzs3a://r9   rI   rJ   rL   rN   r#   r#   r$   test_parse_public_s3a_buckets   s    
z#TestS3.test_parse_public_s3a_bucketc                 C   s^   dD ]T\}}t d|j d| d||d}t|ts8J |jrBJ t|jd d | qd S )Nr2   r8   r9   rI   )rK   r   r:   rL   r@   r#   r#   r$   !test_parse_public_s3_bucket_nrows~   s    
z(TestS3.test_parse_public_s3_bucket_nrowsc              	   C   s   d}dD ]\}}t d|j d| |||dn}|j|ks>J dD ]J}| }	t|	ts\J |	jrfJ |j|| ||d   }
t	|
|	 qBW d    q1 s0    Y  qd S )N   r2   r8   r9   )	chunksizer   r:   r   r)      r)   
r   r=   rS   Z	get_chunkr>   r   r?   rM   r   r   rA   rB   r/   rC   rS   rD   rE   Z	df_readerZi_chunkr+   Ztrue_dfr#   r#   r$   #test_parse_public_s3_bucket_chunked   s$    
z*TestS3.test_parse_public_s3_bucket_chunkedc              	   C   s   d}dD ]\}}t d|j d| ||d|dn}|j|ks@J dD ]J}| }	t|	ts^J |	jrhJ |j|| ||d   }
t	|
|	 qDW d    q1 s0    Y  qd S )	NrR   r2   r8   r9   r   )rS   r   r
   r:   rT   r)   rV   rW   r#   r#   r$   *test_parse_public_s3_bucket_chunked_python   s&    
z1TestS3.test_parse_public_s3_bucket_chunked_pythonc                 C   sT   dD ]J\}}t d|j d| d||d}t|ts8J |jrBJ t|| qd S )Nr2   r8   r9   r   r
   r   r:   r   r=   r>   r   r?   r   r   r@   r#   r#   r$   "test_parse_public_s3_bucket_python   s    
z)TestS3.test_parse_public_s3_bucket_pythonc                 C   sP   dD ]F}t d|j d| dd|d}t|ts4J |jr>J t|| qd S )N)r3   r4   r6   r8   r9   r   r	   rZ   r[   )rA   rB   r/   rC   rD   r+   r#   r#   r$   test_infer_s3_compression   s    
z TestS3.test_infer_s3_compressionc                 C   s`   dD ]V\}}t d|j d| dd||d}t|ts:J |jrDJ t|jd d | qd S )Nr2   r8   r9   r   rI   )r
   rK   r   r:   rL   r@   r#   r#   r$   (test_parse_public_s3_bucket_nrows_python   s    
z/TestS3.test_parse_public_s3_bucket_nrows_pythonc                 C   sB   d}t jt|d td|d W d    n1 s40    Y  d S )N#The specified bucket does not existmatchzs3://nyqpug/asdf.csvrG   )r   raisesOSErrorr   )rA   rC   msgr#   r#   r$   test_read_s3_fails   s    zTestS3.test_read_s3_failsc                 C   sH   d}t jt|d" td|j d W d    n1 s:0    Y  d S )Nr_   r`   r8   z	/file.csv)r   rb   rc   r   r=   )rA   Zs3_private_bucketrC   rd   r#   r#   r$   test_read_s3_fails_private   s    z!TestS3.test_read_s3_fails_privatezGH#39155 s3fs upgradeF)reasonstrictc                 C   sT   dd l }t|jjf}tj|dd |jd|d W d    n1 sF0    Y  d S )Nr   r_   r`   z/s3://an_s3_bucket_data_doesnt_exit/not_real.csvrG   )botocoreFileNotFoundError
exceptionsClientErrorr   rb   to_csvrA   r/   rC   ri   errorr#   r#   r$   test_write_s3_csv_fails   s    zTestS3.test_write_s3_csv_failsc                 C   s^   t d dd l}t|jjf}t j|dd |jd|d W d    n1 sP0    Y  d S )Npyarrowr   r_   r`   z3s3://an_s3_bucket_data_doesnt_exit/not_real.parquetrG   )r   r<   ri   rj   rk   rl   rb   Z
to_parquetrn   r#   r#   r$   test_write_s3_parquet_fails  s    
z"TestS3.test_write_s3_parquet_failsc                 C   sz   | d}t| d  }t|dd}W d    n1 s@0    Y  t|tsXJ |jrbJ t|}t	|| d S )Nr.   Bodyutf8)r&   )
ZObjectr   getr   r   r>   r   r?   r   r   )rA   rB   Z	tips_fileZ	s3_objectbufferresultexpectedr#   r#   r$   $test_read_csv_handles_boto_s3_object  s    
*
z+TestS3.test_read_csv_handles_boto_s3_objectc           
   	   C   s   t tdtdd}t| d}|jd|d |j d}t	
d| d	}|jtjd
dV td| d|d |jD ]*}t	|| }	rt|	ddk sJ qW d    n1 s0    Y  W d    n1 s0    Y  d S )N)i    abcd)columnszutf-8zlarge-file.csv)Keyrs   z/large-file.csvz^Fetch: z, 0-(?P<stop>\d+)$r1   )loggerr8   rR   rJ   stopi z )r   npZzeroslistr   rm   encodeZ
put_objectr=   recompileZat_levelloggingDEBUGr   messagesra   intgroup)
rA   Zs3_public_bucketZcaplogrC   r+   bufuriZmatch_relogra   r#   r#   r$   test_read_csv_chunked_download#  s    
z%TestS3.test_read_csv_chunked_downloadc                 C   s&   t d|j d|d}t|| d S )Nr8   z/tips#1.csvrG   )r   r=   r   r   )rA   rB   r/   rC   rw   r#   r#   r$   test_read_s3_with_hash_in_key6  s    z$TestS3.test_read_s3_with_hash_in_keyc                 C   s8   t d t|}td|j d|d}t|| d S )Nrq   r8   z/simple_dataset.featherrG   )r   r<   r   r=   r   r   )rA   rB   Zfeather_filerC   rx   resr#   r#   r$   test_read_feather_s3_file_path=  s    
z%TestS3.test_read_feather_s3_file_pathN)__name__
__module____qualname__rF   rH   rO   rP   rQ   rX   rY   r\   r]   r^   re   rf   r   markZxfailrp   rr   
single_cpury   r   r   r   r#   r#   r#   r$   r0   L   s,   




r0   )"__doc__r   r   r   r   numpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   Zpandas._testingZ_testingr   Zpandas.io.feather_formatr   Zpandas.io.parsersr   r   filterwarningsZ
pytestmarknetworkr   Zparametrizer%   r,   Zfixturer/   ZusefixturesZskip_if_not_us_localer0   r#   r#   r#   r$   <module>   s6   

