
    i                        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*                  j-                  d      Zej*                  j0                  ej*                  j2                  ej*                  j5                  dd	d
g      ej*                  j5                  dddg      d                             Zej*                  j0                  ej*                  j2                  d               Zej:                  d        Zej*                  j2                  ej*                  j0                   ej>                          G d d                           Z y)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           	      X   |dk(  rt        j                  d       ||   }t         |dddd|z         d      5 }| j                  |j	                                d d d        | j
                  d	z   |z   }	|d
k7  r|}t        |	d||      }
t        j                  |
|       y # 1 sw Y   HxY w)Ntarz4TODO: Add tar salaries.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              `/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_network.pytest_compressed_urlsr*      s     5 JK()9:I	htXv~	/IJD	Q 3UV   23 ..?
*Y
6Cz$4DVTI)^43 3s   !B  B)c                     t         |dddd      d      5 }| j                  |j                                t        | j                  dd	      }ddd       j
                  d
   dk(  sJ y# 1 sw Y   xY w)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   9   sw     
htXv/CDd	K Gq   2jnnyFG 66%=BBBBG Gs   9A,,A5c                 *    t         | dddd            S )z DataFrame with the tips dataset.r   r   csvtips.csvr   )r"   s    r)   tips_dfr6   G   s     HT65*=>>    c                      e Zd Zej                  j                  dg d      ej                  j                  dddg      ej                  j                  dddg      d	                      Zd
 Zej                  j                  dddg      d        Zej                  j                  dg d      ej                  j                  dddg      d               Z	ej                  j                  dg d      d        Z
d Zd Zej                  j                  d        Zej                  j                  d        Zd Zd Zy)TestS3zsuffix, compression)) N).gzgzip).bz2bz2nrowsN
   r   r   r   c                     t        j                  d       t        d|j                   d| ||||      }t	        j
                  ||j                  d |        y )Ns3fss3://	/tips.csv)r?   r   storage_optionsr   )r   importorskipr   namer   r    iloc)	selfs3_bucket_public_with_datas3sor6   suffixr   r?   r   r1   s	            r)   test_parse_public_s3_bucketz"TestS3.test_parse_public_s3_bucketQ   s]    , 	F#.334IfXF# 
 	b',,v"67r7   c                     t        j                  d       t        d|j                   d|      }t	        j
                  ||       y )NrB   rC   rD   rE   )r   rF   r   rG   r   r    )rI   s3_bucket_private_with_datarK   r6   r1   s        r)   test_parse_private_s3_bucketz#TestS3.test_parse_private_s3_bucketq   sC    F#/445Y?QU
 	b'*r7   schemes3ns3ac                     d}t        | d|j                   d||      }t        j                  ||j                  d |        y )Nr@   z://rD   r?   rE   )r   rG   r   r    rH   )rI   rJ   rK   r6   rR   r?   r1   s          r)    test_parse_public_bucket_s3n_s3az'TestS3.test_parse_public_bucket_s3n_s3ay   sN     hc499:)D 

 	b',,v"67r7   c                 `   d}t        d|j                   d| ||||      5 }|j                  |k(  sJ dD ]`  }	|j                         }
t	        |
t
              sJ |
j                  rJ |j                  ||	z  ||	dz   z   }t        j                  ||
       b 	 d d d        y # 1 sw Y   y xY w)N   rC   rD   )	chunksizer   rE   r   )r   r/      r/   )
r   rG   rZ   	get_chunk
isinstancer   emptyrH   r   r    )rI   rJ   rK   r6   rL   r   r   rZ   	df_readeri_chunkr1   true_dfs               r)   #test_parse_public_s3_bucket_chunkedz*TestS3.test_parse_public_s3_bucket_chunked   s     	.334IfXF# 
 	3 &&)333$ 3 ((*!"i00088#|!,,y7':Y'TU+=VW%%gr23	3 	3 	3s   A7B$$B-rL   )r:   r;   r=   c                 n    t        d|j                   d| dd|      }t        j                  ||       y )NrC   rD   r   r
   )r   r   rE   r   rG   r   r    )rI   rJ   rK   r6   rL   r1   s         r)   test_infer_s3_compressionz TestS3.test_infer_s3_compression   sA     .334IfXF 	
 	b'*r7   c                     d}t        j                  t        |      5  t        d|       d d d        y # 1 sw Y   y xY w)Nz#The specified bucket does not existmatchzs3://nyqpug/asdf.csvrO   )r   raisesOSErrorr   )rI   rJ   rK   msgs       r)   test_read_s3_failszTestS3.test_read_s3_fails   s9    3]]7#. 	C+TB	C 	C 	Cs   5>c                     |j                    d}| }t        j                  t        |      5  t	        d| |       d d d        y # 1 sw Y   y xY w)Nz	/file.csvrg   rC   rO   )rG   r   ri   FileNotFoundErrorr   )rI   rP   rK   s3_urlrk   s        r)   test_read_s3_fails_privatez!TestS3.test_read_s3_fails_private   sW    /445Y? ]],C8 	x  $	 	 	s   AAc                 @   |j                  d      }t        |j                         d   j                               5 }t	        |d      }d d d        t        t              sJ |j                  rJ t	        |      }t        j                  ||       y # 1 sw Y   KxY w)Nr5   Bodyutf8)r,   )
Objectr   getr   r   r]   r   r^   r   r    )rI   rJ   	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	Y]]_V,1134 	7fv6F	7&),,,<<I&
fh/	7 	7s   BBc                 h   t        t        j                  d      t        d            }t	        |j                         j                  d            5 }|j                  d|       |j                   d}t        j                  d| d	      }|j                  t        j                  d
      5  t        d| d|       |j                  D ]:  }t        j                   ||      x}	st#        |	j%                  d            dk  r:J  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)i    abcd)columnszutf-8zlarge-file.csv)Keyrr   z/large-file.csvz^Fetch: z, 0-(?P<stop>\d+)$rB   )loggerrC   rY   rV   stopi z )r   npzeroslistr   to_csvencode
put_objectrG   recompileat_levelloggingDEBUGr   messagesrh   intgroup)
rI   s3_bucket_publicrK   caplogr1   bufurimatch_relogrh   s
             r)   test_read_csv_chunked_downloadz%TestS3.test_read_csv_chunked_download   s#    rxx,d6lCRYY[''01 	BS'',<3'G%**+?;CzzXcU2D"EFHv> 	BC5M$(
 "?? BC "3 77u7"5;;v#67'AAAB	B		B 	B	B 	B		B 	Bs1   AD(/9D)DDD(D%	!D((D1c                 f    t        d|j                   d|      }t        j                  ||       y )NrC   z/tips#1.csvrO   rd   )rI   rJ   rK   r6   ry   s        r)   test_read_s3_with_hash_in_keyz$TestS3.test_read_s3_with_hash_in_key   s5    .334K@RV
 	gv.r7   c                     t        j                  d       t        |      }t        d|j                   d|      }t	        j
                  ||       y )NpyarrowrC   z/simple_dataset.featherrO   )r   rF   r   rG   r   r    )rI   rJ   rK   feather_filerz   ress         r)   test_read_feather_s3_file_pathz%TestS3.test_read_feather_s3_file_path   sP     	I&-.3344KL 
 	h,r7   )__name__
__module____qualname__r   markparametrizerM   rQ   rW   rb   re   rl   rp   
single_cpur{   r   r   r    r7   r)   r9   r9   M   sZ    [[	
 [[WtRj1[[XX78 8 28,+ [[Xu~6	8 7	8 [[	
 [[XX73 83, [[X':;	+ <	+C
	 [[0 0 [[B B$/
-r7   r9   )!__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   r   r*   r2   fixturer6   skip_if_not_us_localer9   r   r7   r)   <module>r      sD  
   	   ) )   1 &[[''C

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