
    Owg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*                  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*                  j?                  d       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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              Z/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/io/parser/test_network.pytest_compressed_urlsr*      s     5 KL()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   8   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   F   s     HT65*=>>    s3_resourcec                   \   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                   j#                  dd      d        Zej                   j#                  dd      d        Zej                   j(                  d        Zej                   j(                  d        Zd Zd Zy)TestS3c                     t        j                  d       dD ]Z  \  }}t        d|j                   d|z   ||      }t	        |t
              sJ |j                  rJ t        j                  ||       \ y )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2778	BSH  $B
 b),,,xx<!!"g.	/r7   c                     t        j                  d       t        d|j                   d|      }t	        |t
              sJ |j                  rJ t        j                  ||       y )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45Y?QU
 "i(((88|
b'*r7   c                     t        d|j                   dd|      }t        |t              sJ |j                  rJ t        j                  |j                  d d |       y )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   _    /445Y? 

 "i(((88|
gll3B/4r7   c                     t        d|j                   dd|      }t        |t              sJ |j                  rJ t        j                  |j                  d d |       y )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 ]h  \  }}t        d|j                   d|z   d||      }t        |t              sJ |j                  rJ t        j                  |j                  d d |       j y )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 		9IC2778	BSH  $	B b),,,xx<!!',,s"3R8		9r7   c                 t   d}dD ]  \  }}t        d|j                   d|z   |||      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   xY w)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   s     	G 	7IC2778	BSH#  $	 7
  **i777( 	7G #,,.B%b)444!xx'<%ll!G+i7Q;.GG ))'26	77 7	77 7s   A7B..B7	c                 v   d}dD ]  \  }}t        d|j                   d|z   ||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   xY w)	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   s     	G 	7IC2778	BSH#  $ 7  **i777( 7G",,.B%b)444!xx'<%ll!G+i7Q;.GG ))'2677 7	77 7s   A7B//B8	c                     dD ][  \  }}t        d|j                   d|z   d||      }t        |t              sJ |j                  rJ t        j                  ||       ] y )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   sr     H 		/IC2778	BSH  $	B b),,,xx<!!"g.		/r7   c                     dD ]X  }t        d|j                   d|z   dd|      }t        |t              sJ |j                  rJ t        j                  ||       Z y )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   sk    & 		/C2778	BSH# $	B b),,,xx<!!"g.		/r7   c                     dD ]i  \  }}t        d|j                   d|z   dd||      }t        |t              sJ |j                  rJ t        j                  |j                  d d |       k y )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 
	9IC2778	BSH  $B b),,,xx<!!',,s"3R8
	9r7   c                     d}t        j                  t        |      5  t        d|       d d d        y # 1 sw Y   y xY w)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   s9    3]]7#. 	C+TB	C 	C 	Cs   5>c                     d}t        j                  t        |      5  t        d|j                   d       d d d        y # 1 sw Y   y xY w)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   sI    3 ]]7#. 	@u.334I>?	@ 	@ 	@s   AA
zGH#39155 s3fs upgradeF)reasonstrictc                     dd l }t        |j                  j                  f}t	        j
                  |d      5  |j                  d|       d d d        y # 1 sw Y   y xY w)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   sZ     	
 #H$7$7$C$CD]]5(MN 	NNASW  	 	 	s   AAc                     t        j                  d       dd l}t        |j                  j
                  f}t        j                  |d      5  |j                  d|       d d d        y # 1 sw Y   y xY w)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  sj     	I&
 #H$7$7$C$CD]]5(MN 	E $  	 	 	s   A**A3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   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	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)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#    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.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  s5    .334K@RV
 	gv.r7   c                     t        j                  d       t        |      }t        d|j                   d|      }t	        j
                  ||       y )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=  sP     	I&-.3344K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97070/
/9C
@ [[5eD E [[5eD E" [[0 0 [[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      sI     	   ) )   1 &[[''C

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