
    Mh                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr  \R2                  R5                  S5      r\R8                  S 5       r\R2                  R<                  \R2                  R?                  S/ S	Q5      S
 5       5       r S\!S\!S\"4S jr#\R2                  R?                  SSS/5      S 5       r$S r%\RL                  " S5      S 5       r'g)    )BytesION)pa_version_under17p0)	DataFrameIndex
date_rangeread_csv
read_excel	read_jsonread_parquet)_test_decoratorsz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                     ^ [         R                  " S5        [         R                  " S5      n [        5       mS Tl         " U4S jSU R                  5      nU R                  SUSS9  T$ )	z"Emulate GCS using a binary buffer.gcsfsfsspecc                      g)NT r       J/var/www/html/env/lib/python3.13/site-packages/pandas/tests/io/test_gcs.py<lambda>gcs_buffer.<locals>.<lambda>$   s    tr   c                   2   > \ rS rSr\U 4S j5       rS rSrg)%gcs_buffer.<locals>.MockGCSFileSystem&   c                  *   > TR                  S5        T$ )Nr   )seek)argskwargs
gcs_buffers     r   open*gcs_buffer.<locals>.MockGCSFileSystem.open'   s    OOAr   c                     USS./$ )Nfile)nametyper   )selfpathr   s      r   ls(gcs_buffer.<locals>.MockGCSFileSystem.ls,   s    !6233r   r   N)__name__
__module____qualname____firstlineno__staticmethodr   r&   __static_attributes__)r   s   r   MockGCSFileSystemr   &   s    		 
		4r   r.   gsT)clobber)pytestimportorskipr   closeAbstractFileSystemregister_implementation)r   r.   r   s     @r   r   r      sb        *FJ#J4F55 4 ""4):D"Ir   format)csvjsonparquetexcelmarkdownc           
        ^ [        SS/S[        R                  /SS/[        SSS9S	.5      nS
U 3nUS:X  a  UR	                  USS9  [        US/SS9nGOjUS:X  a!  SnUR                  U5        [        US/SS9nGOCUS:X  a  UR                  U5        [        US/S9nGOUS:X  a  [        R                  " S5        [        R                  " S5      m " U4S jSTR                  5      nUR                  [        R                  R                  [         (       + ["        SS95        UR%                  5        n	U	R'                  TSU5        UR)                  U5        [+        U5      nSSS5        UR-                  5       n
U
R.                  S:X  d   eO/US:X  a)  [        R                  " S 5        UR1                  U5        Un[2        R4                  " UW5        g! , (       d  f       Nx= f)!z9
Test that many to/read functions support GCS.

GH 33987
             @ts
2018-06-18   periodsintfloatstrdtzgs://test/test.r7   T)indexrJ   r   )parse_dates	index_colr:   zgs://test/test.xlsxr8   )convert_datesr9   pyarrowz
pyarrow.fsc                   ,   > \ rS rSr\U 4S j5       rSrg)(test_to_read_gcs.<locals>.MockFileSystemY   c                    > [        S5        [        R                  " U R                  SS5      5      R	                  5       R                  5       nTR                  U5      $ )NzUsing pyarrow filesystemzgs:// )printpathlibPathreplaceabsoluteas_uriLocalFileSystem)r%   to_localpa_fss     r   from_uri1test_to_read_gcs.<locals>.MockFileSystem.from_uriZ   sH    01"<<Wb(ABKKMTTV,,X66r   r   N)r(   r)   r*   r+   r,   r^   r-   )r]   s   r   MockFileSystemrQ   Y   s    7 7r   r`   z&pyarrow 17 broke the mocked filesystem)raisesreason
FileSystemNz2Using pyarrow filesystem
Using pyarrow filesystem
r;   tabulate)r   npnanr   to_csvr   to_excelr	   to_jsonr
   r1   r2   rc   applymarkermarkxfailr   	TypeErrorcontextsetattr
to_parquetr   
readouterroutto_markdowntmassert_frame_equal)r   r6   monkeypatchcapsysrequestdf1r%   df2r`   mcapturedr]   s              @r   test_to_read_gcsr}   7   s    q6266]:\15		
C VH%D

4t
$t$1=	7	$TD6Q?	6	DTF3	9	I&##L1	7U-- 	7 	KK(( ?  	
   "aIIe\>:NN4 t$C # $$&||UUUU	:	J'#s# #"s   70G
G'resultexpectedcompressionc                    US:X  a  [         R                  " [        U 5      5       n[         R                  " [        U5      5       n[        UR	                  5       UR	                  5       5       H!  u  pVUR
                  UR
                  :X  a  M!   e   SSS5        SSS5        gUS:X  a  [        R                  " [        U 5      S9 n[        R                  " [        U5      S9 n[        UR                  5       UR                  5       5       Ha  u  pUR                  U	5      nUR                  U
5      nUSL USL :X  d   eUc  M8  Uc  M=  UR                  5       UR                  5       :X  a  Ma   e   SSS5        SSS5        gX:X  d   eg! , (       d  f       N= f! , (       d  f       g= f! , (       d  f       NA= f! , (       d  f       g= f)z
For zip compression, only compare the CRC-32 checksum of the file contents
to avoid checking the time-dependent last-modified timestamp which
in some CI builds is off-by-one

See https://en.wikipedia.org/wiki/ZIP_(file_format)#File_headers
zipNtar)fileobj)zipfileZipFiler   r   infolistCRCtarfiler   
getmembersextractfileread)r~   r   r   expresres_infoexp_infotar_exptar_restar_res_infotar_exp_infoactual_fileexpected_files                r   assert_equal_zip_safer   u   sw    e__WV_-gooH7
&)#,,.#,,.&I"||x||333 'J7
--
 
	\\'&/2gw||H%@
.1""$g&8&8&:/* &11,? ' 3 3L A#t+$1FGGG*}/H&++-1C1C1EEEE/@
22 !!!%7
 7
--@
 @
22sa    FAFFFG &AF/F/ F/0F/4G 
F	F
F,/
F=	9G  
Gencodingutf-8cp1251c                    [        S[        R                  " S5      R                  S5      -  [	        [        S5      [        S9[	        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S9nS	U0nUS
:X  a  SUS'   [        5       nUR                  XvUSS9  SnUR                  XUS9  U R                  5       n	UR                  5       n
[        XU5        [        USXS9n[        R                  " X[5        X1   nSUS	'   USU 3-  nUR                  XUS9  U R                  5       n	UR                  5       n
[        XU5        [        USSUS9n[        R                  " X[5        gs  snf )z
Compression and encoding should with GCS.

GH 35677 (to_csv, compression), GH 26124 (to_csv, encoding), and
GH 32392 (read_csv, encoding)
g?x   )      ABCD)dtyper   zi-)columnsrK   methodgzipr=   mtimewb)r   r   modegs://test/test.csv)r   r   r   )rM   r   r   infer.N)r   re   arangereshaper   listobjectranger   rg   getvaluer   r   rt   ru   )r   compression_onlyr   compression_to_extensionidfr   bufferpath_gcsr   r   read_dffile_exts                r   $test_to_csv_compression_encoding_gcsr      sm    
biin$$W--d6l&1uRy1y!r!Xy1@
B -.K6! GYFIIftIL $HIIh(IC



C H#)9:A+;G "& (9H#K!H:HIIh(IC



C H#)9:x1'HUG"&C 2s   E)c           
      &  ^ [         R                  " S5        [         R                  " S5        SSKJn  [	        SS/S[
        R                  /SS	/[        S
SS9S.5      n " U4S jSU5      nU R                  SU5        UR                  SSSSS9  g)zCRegression test for writing to a not-yet-existent GCS Parquet file.fastparquetr   r   )r4   r=   r>   r?   r@   rA   rB   rC   rD   rF   c                   &   > \ rS rSrSU 4S jjrSrg)7test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystem   c                 n   > SU;  a  [         e[        [        R                  R	                  TS5      USS9$ )Nwztest.parquetr   )r   )FileNotFoundErrorr   osr%   join)r$   r%   r   r   tmpdirs       r   r   <test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystem.open   s.    $''V^<dWUUr   r   N)r)r(   r)   r*   r+   r   r-   )r   s   r   r.   r      s    	V 	Vr   r.   zgcsfs.GCSFileSystemr   TN)rK   enginer   )
r1   r2   r   r4   r   re   rf   r   ro   rp   )rv   r   r4   ry   r.   s    `   r   test_to_parquet_gcs_new_filer      s    
&
 )
q6266]:\15		
CV. V -/@ANNDD  r   r   c                      [         R                  " [        5         [        S5        S S S 5        g ! , (       d  f       g = f)Nr   )rt   external_error_raisedImportErrorr   r   r   r   test_gcs_not_present_exceptionr      s%    		!	!+	.%& 
/	.	.s   0
>)(ior   r   rV   r   r   numpyre   r1   pandas.compat.pyarrowr   pandasr   r   r   r   r	   r
   r   pandas._testing_testingrt   pandas.utilr   tdrk   filterwarnings
pytestmarkfixturer   
single_cpuparametrizer}   bytesrI   r   r   r   skip_if_installedr   r   r   r   <module>r      s    	      6    .[[''C

  2 #RS9$ T 9$x"% "5 "s "> gx%89-' :-'`8 g' 'r   