
    Eg0                        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	c 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                                                 Zej        j        ej        j        d                         Zej        d             Zej        j        ej                            d           ej                      G 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           	         |dk    rt          j        d           ||         }t           |dddd|z             d          5 }|                     |                                           d d d            n# 1 swxY w Y   | j        d	z   |z   }	|d
k    r|}t          |	d||          }
t          j        |
|           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datapathsalaries_tabler   r   compression_onlycompression_to_extension	extensionfr   	url_tables              X/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/tests/io/parser/test_network.pytest_compressed_urlsr*      s    5  KLLL()9:I	hhtXv~	/IJJD	Q	Q 3UV   2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 .?
*Y
6Cz$4DVTTTI)^44444s   )A77A;>A;c                    t           |dddd          d          5 }|                     |                                           t          | j        dd	          }ddd           n# 1 swxY w Y   |j        d
         dk    sJ 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'   dfs       r)   test_url_encoding_csvr2   8   s     
hhtXv/CDDd	K	K Gq   222jnyFFFG G G G G G G G G G G G G G G 6%=BBBBBBBs   A A))A-0A-c                 8    t           | dddd                    S )z DataFrame with the tips dataset.r   r   csvtips.csvr   )r"   s    r)   tips_dfr6   F   s"     HHT65*==>>>    s3_resourcec                   J   e 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 Zej                            dd          d             Zej                            dd          d             Zej        j        d             Zej        j        d             Zd Zd ZdS )TestS3c                     t          j        d           dD ]X\  }}t          d|j         d|z   ||          }t	          |t
                    sJ |j        rJ t          j        ||           Yd 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_datar6   s3soextcompr1   s          r)   test_parse_public_s3_bucketz"TestS3.test_parse_public_s3_bucketP   s     	F###G 	/ 	/ICB27BBBSH  $  B
 b),,,,,x!"g....	/ 	/r7   c                     t          j        d           t          d|j         d|          }t	          |t
                    sJ |j        rJ t          j        ||           d S )Nr<   rC   rD   rE   rF   )rL   s3_private_bucket_with_datar6   rN   r1   s        r)   test_parse_private_s3_bucketz#TestS3.test_parse_private_s3_bucket^   s{    F###?/4???QU
 
 
 "i(((((8
b'*****r7   c                     t          d|j         dd|          }t          |t                    sJ |j        rJ t          j        |j        d d         |           d S )Nzs3n://rD   
   nrowsrE   r   rH   rI   r   rJ   r   r    ilocrL   rM   r6   rN   r1   s        r)   test_parse_public_s3n_bucketz#TestS3.test_parse_public_s3n_bucketh   x    ?/4??? 
 
 

 "i(((((8
gl3B3/44444r7   c                     t          d|j         dd|          }t          |t                    sJ |j        rJ t          j        |j        d d         |           d S )Nzs3a://rD   rW   rX   rZ   r\   s        r)   test_parse_public_s3a_bucketz#TestS3.test_parse_public_s3a_buckets   r^   r7   c                     dD ]f\  }}t          d|j         d|z   d||          }t          |t                    sJ |j        rJ t          j        |j        d d         |           gd S )Nr=   rC   rD   rW   )rY   r   rE   rZ   rK   s          r)   !test_parse_public_s3_bucket_nrowsz(TestS3.test_parse_public_s3_bucket_nrows~   s     H 		9 		9ICB27BBBSH  $	  B b),,,,,x!',ss"3R8888		9 		9r7   c                 p   d}dD ]\  }}t          d|j         d|z   |||          5 }|j        |k    sJ dD ]c}|                                }	t	          |	t
                    sJ |	j        rJ |j        ||z  ||dz   z           }
t          j	        |
|	           d	 d d d            n# 1 swxY w Y   d S )N   r=   rC   rD   )	chunksizer   rE   r   r/      r/   
r   rH   re   	get_chunkrI   r   rJ   r[   r   r    rL   rM   r6   rN   re   rO   rP   	df_readeri_chunkr1   true_dfs              r)   #test_parse_public_s3_bucket_chunkedz*TestS3.test_parse_public_s3_bucket_chunked   sJ    	G 	7 	7ICB27BBBSH#  $	   7
  *i7777( 	7 	7G #,,..B%b)44444!x'''%l!G+i7Q;.GGG )'26666	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s   A4B**B.	1B.	c                 r   d}dD ]\  }}t          d|j         d|z   ||d|          5 }|j        |k    sJ dD ]c}|                                }	t	          |	t
                    sJ |	j        rJ |j        ||z  ||dz   z           }
t          j	        |
|	           d	 d d d            n# 1 swxY w Y   d S )	Nrd   r=   rC   rD   r   )re   r   r   rE   rf   r/   rh   rj   s              r)   *test_parse_public_s3_bucket_chunked_pythonz1TestS3.test_parse_public_s3_bucket_chunked_python   sK    	G 	7 	7ICB27BBBSH#  $   7  *i7777( 7 7G",,..B%b)44444!x'''%l!G+i7Q;.GGG )'2666677 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s   A4B++B/	2B/	c                     dD ]Y\  }}t          d|j         d|z   d||          }t          |t                    sJ |j        rJ t          j        ||           Zd S )Nr=   rC   rD   r   r   r   rE   r   rH   rI   r   rJ   r   r    rK   s          r)   "test_parse_public_s3_bucket_pythonz)TestS3.test_parse_public_s3_bucket_python   s     H 		/ 		/ICB27BBBSH  $	  B b),,,,,x!"g....		/ 		/r7   c                     dD ]V}t          d|j         d|z   dd|          }t          |t                    sJ |j        rJ t          j        ||           Wd S )N)r>   r?   rA   rC   rD   r   r
   rr   rs   )rL   rM   r6   rN   rO   r1   s         r)   test_infer_s3_compressionz TestS3.test_infer_s3_compression   s    & 		/ 		/CB27BBBSH# $	  B b),,,,,x!"g....		/ 		/r7   c                     dD ]g\  }}t          d|j         d|z   dd||          }t          |t                    sJ |j        rJ t          j        |j        d d         |           hd S )Nr=   rC   rD   r   rW   )r   rY   r   rE   rZ   rK   s          r)   (test_parse_public_s3_bucket_nrows_pythonz/TestS3.test_parse_public_s3_bucket_nrows_python   s     H 
	9 
	9ICB27BBBSH  $  B b),,,,,x!',ss"3R8888
	9 
	9r7   c                     d}t          j        t          |          5  t          d|           d d d            d S # 1 swxY w Y   d S )N#The specified bucket does not existmatchzs3://nyqpug/asdf.csvrS   )r   raisesOSErrorr   )rL   rN   msgs      r)   test_read_s3_failszTestS3.test_read_s3_fails   s    3]7#... 	C 	C+TBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   =AAc                     d}t          j        t          |          5  t          d|j         d           d d d            d S # 1 swxY w Y   d S )Nrz   r{   rC   z	/file.csv)r   r}   r~   r   rH   )rL   s3_private_bucketrN   r   s       r)   test_read_s3_fails_privatez!TestS3.test_read_s3_fails_private   s    3 ]7#... 	@ 	@>.3>>>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   AAAzGH#39155 s3fs upgradeF)reasonstrictc                     dd l }t          |j        j        f}t	          j        |d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Nr   rz   r{   z/s3://an_s3_bucket_data_doesnt_exit/not_real.csvrS   )botocoreFileNotFoundError
exceptionsClientErrorr   r}   to_csvrL   r6   rN   r   errors        r)   test_write_s3_csv_failszTestS3.test_write_s3_csv_fails   s     	
 #H$7$CD]5(MNNN 	 	NNASW    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     t          j        d           dd l}t          |j        j        f}t          j        |d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Npyarrowr   rz   r{   z3s3://an_s3_bucket_data_doesnt_exit/not_real.parquetrS   )r   rG   r   r   r   r   r}   
to_parquetr   s        r)   test_write_s3_parquet_failsz"TestS3.test_write_s3_parquet_fails  s     	I&&&
 #H$7$CD]5(MNNN 	 	E $    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A''A+.A+c                 |   |                     d          }t          |                                d                                                   5 }t	          |d          }d d d            n# 1 swxY w Y   t          |t                    sJ |j        rJ t	          |          }t          j	        ||           d S )Nr5   Bodyutf8)r,   )
Objectr   getr   r   rI   r   rJ   r   r    )rL   rM   	tips_file	s3_objectbufferresultexpecteds          r)   $test_read_csv_handles_boto_s3_objectz+TestS3.test_read_csv_handles_boto_s3_object  s     /55jAA	Y]]__V,113344 	7fv666F	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7&),,,,,<I&&
fh/////s   A--A14A1c                    t          t          j        d          t          d                    }t	          |                                                    d                    5 }|                    d|           |j         d}t          j
        d| d	          }|                    t          j        d
          5  t          d| d|           |j        D ]A}t          j        ||          x}	r(t#          |	                    d                    dk     sJ B	 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 )N)i    abcd)columnszutf-8zlarge-file.csv)Keyr   z/large-file.csvz^Fetch: z, 0-(?P<stop>\d+)$r<   )loggerrC   rd   rX   stopi z )r   npzeroslistr   r   encode
put_objectrH   recompileat_levelloggingDEBUGr   messagesr|   intgroup)
rL   s3_public_bucketcaplogrN   r1   bufurimatch_relogr|   s
             r)   test_read_csv_chunked_downloadz%TestS3.test_read_csv_chunked_download#  s    rx,,d6llCCCRYY[[''0011 	BS'',<3'GGG%*;;;Cz"Ec"E"E"EFFHv>> 	B 	B!CMM$(   
 "? B BC "3 7 77u B"5;;v#6#677'AAAAB	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B		B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs8   %AE AD, E,D0	0E3D0	4EEEc                 d    t          d|j         d|          }t          j        ||           d S )NrC   z/tips#1.csvrS   )r   rH   r   r    )rL   rM   r6   rN   r   s        r)   test_read_s3_with_hash_in_keyz$TestS3.test_read_s3_with_hash_in_key6  sF    @.3@@@RV
 
 
 	gv.....r7   c                     t          j        d           t          |          }t          d|j         d|          }t	          j        ||           d S )Nr   rC   z/simple_dataset.featherrS   )r   rG   r   rH   r   r    )rL   rM   feather_filerN   r   ress         r)   test_read_feather_s3_file_pathz%TestS3.test_read_feather_s3_file_path=  sf     	I&&&--L.3LLL 
 
 
 	h,,,,,r7   N)__name__
__module____qualname__rQ   rU   r]   r`   rb   rn   rp   rt   rv   rx   r   r   r   markxfailr   r   
single_cpur   r   r   r    r7   r)   r:   r:   L   s       / / /+ + +	5 	5 	5	5 	5 	59 9 97 7 707 7 70/ / /
/ 
/ 
/9 9 9C C C
@ @ @ [5eDD  ED [5eDD  ED" [0 0 0 [B B B$/ / /
- 
- 
- 
- 
-r7   r:   )"__doc__r   r   r   r   numpyr   r   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   pandas._testing_testingr   pandas.io.feather_formatr   pandas.io.parsersr   r   filterwarnings
pytestmarknetworkr   parametrizer*   r2   fixturer6   usefixturesskip_if_not_us_localer:   r   r7   r)   <module>r      s           				      ) ) ) ) ) ) ) ) )             1 1 1 1 1 1 & & & & & &[''C 

 *g!677Hc?335 5 43 87  56 	C 	C  	C ? ? ?
 ''x- x- x- x- x- x- x-  (' x- x- x-r7   