Ë
    u™ãj;  ã                   ó   — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZd dlmZ d dlmZ ej*                  d„ «       Zej.                  j0                  ej.                  j3                  d«      ej.                  j5                  dg d	¢«      d
„ «       «       «       Zdededefd„Zej.                  j5                  dddg«      d„ «       Zej.                  j3                  d«      d„ «       Z  ejB                  d«      d„ «       Z"y)é    )ÚBytesION)Úpa_version_under17p0)ÚPandas4Warning)Ú_test_decoratorsc                  óÖ   ‡— t        j                  d«       t        j                  d«      } t        «       Šd„ ‰_         G ˆfd„d| j                  «      }| j                  d|d¬«       ‰S )	z"Emulate GCS using a binary buffer.ÚgcsfsÚfsspecc                   ó   — y)NT© r   ó    úc/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/tests/io/test_gcs.pyú<lambda>zgcs_buffer.<locals>.<lambda>   s   � r   c                   ó(   •— e Zd Zeˆ fd„«       Zd„ Zy)ú%gcs_buffer.<locals>.MockGCSFileSystemc                  ó*   •— ‰j                  d«       ‰S )Nr   )Úseek)ÚargsÚkwargsÚ
gcs_buffers     €r   Úopenz*gcs_buffer.<locals>.MockGCSFileSystem.open   s   ø€ à�O‰O˜AÔØÐr   c                 ó   — |ddœgS )NÚfile)ÚnameÚtyper   )ÚselfÚpathr   s      r   Úlsz(gcs_buffer.<locals>.MockGCSFileSystem.ls!   s   € à!¨6Ñ2Ð3Ð3r   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   )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Ôö4˜F×5Ñ5ô 4ð ×"Ñ" 4Ð):ÀDÐ"ÔIàÐr   zBignore:The default engine for reading:pandas.errors.Pandas4WarningÚformat)ÚcsvÚjsonÚparquetÚexcelÚmarkdownc           
      ó  ‡— t        j                  ddgdt        j                  gddgt        j                  ddd¬	«      d
œ«      }d|› �}|dk(  r.|j                  |d¬«       t        j                  |dgd¬«      }�n«|dk(  r.d}|j                  |«       t        j                  |dgd¬«      }�nx|dk(  rS|j                  |d¬«       d}t        j                  t        |¬«      5  t        j                  |dg¬«      }ddd«       �n |dk(  rît        j                  d«       t        j                  d«      Š G ˆfd„d‰j                   «      }	|j#                  t        j$                  j'                  t(         t*        d ¬!«      «       |j-                  «       5 }
|
j/                  ‰d"|	«       |j1                  |«       t        j2                  |«      }ddd«       |j5                  «       }|j6                  d#k(  s/J ‚|d$k(  r(t        j                  d%«       |j9                  |«       |}|dd }|d&v r!|d   j:                  j=                  d'«      |d<   t        j>                  |«       y# 1 sw Y   ŒJxY w# 1 sw Y   Œ¤xY w)(zE
    Test that many to/read functions support GCS.

    GH 33987
    é   é   ç       @ÚtÚsú
2018-06-18é   Úns)ÚperiodsÚunit)ÚintÚfloatÚstrÚdtzgs://test/test.r+   T)Úindexr>   r   )Úparse_datesÚ	index_colr.   zgs://test/test.xlsxr,   Úiso)Údate_formatz6The 'convert_dates' keyword in read_json is deprecated)Úmatch)Úconvert_datesNr-   Úpyarrowz
pyarrow.fsc                   ó"   •— e Zd Zeˆ fd„«       Zy)ú(test_to_read_gcs.<locals>.MockFileSystemc                 ó¾   •— t        d«       t        j                  | j                  dd«      «      j	                  «       j                  «       }‰j                  |«      S )NzUsing pyarrow filesystemzgs://Ú )ÚprintÚpathlibÚPathÚreplaceÚabsoluteÚas_uriÚLocalFileSystem)r   Úto_localÚpa_fss     €r   Úfrom_uriz1test_to_read_gcs.<locals>.MockFileSystem.from_uriT   sH   ø€ äÐ0Ô1Ü"Ÿ<™<¨¯©°W¸bÓ(AÓB×KÑKÓM×TÑTÓV�Ø×,Ñ,¨XÓ6Ð6r   N)r   r   r    r!   rT   )rS   s   €r   ÚMockFileSystemrH   S   s   ø„ Øó7ó ñ7r   rU   z&pyarrow 17 broke the mocked filesystem)ÚraisesÚreasonÚ
FileSystemz2Using pyarrow filesystem
Using pyarrow filesystem
r/   Útabulate)r+   r.   r,   Úus) ÚpdÚ	DataFrameÚnpÚnanÚ
date_rangeÚto_csvÚread_csvÚto_excelÚ
read_excelÚto_jsonÚtmÚassert_produces_warningr   Ú	read_jsonr%   r&   rX   ÚapplymarkerÚmarkÚxfailr   Ú	TypeErrorÚcontextÚsetattrÚ
to_parquetÚread_parquetÚ
readouterrÚoutÚto_markdownr>   Úas_unitÚassert_frame_equal)r   r*   ÚmonkeypatchÚcapsysÚrequestÚdf1r   Údf2Údepr_msgrU   ÚmÚcapturedÚexpectedrS   s                @r   Útest_to_read_gcsr~   ,   sE  ø€ ô �,‰,à�q�6Øœ2Ÿ6™6�]Ø˜�:Ü—-‘- °a¸dÔCñ		
ó€Cð ˜V˜HÐ%€Dà�‚Ø�
‰
�4˜tˆ
Ô$Ü�k‰k˜$¨T¨F¸aÔ@ŠØ	�7Ò	Ø$ˆØ�‰�TÔÜ�m‰m˜D¨t¨fÀÔBŠØ	�6Ò	Ø�‰�D eˆÔ,ØKˆÜ×'Ñ'¬¸hÔGñ 	;Ü—,‘,˜t°D°6Ô:ˆC÷	;ñ 	;à	�9Ò	Ü×Ñ˜IÔ&Ü×#Ñ# LÓ1ˆö	7˜U×-Ñ-ô 	7ð 	×ÑÜ�K‰K×ÑÜ(Ð(Ü Ø?ð ó ô	
ð × Ñ Ó"ð 	( aØ�I‰I�e˜\¨>Ô:Ø�N‰N˜4Ô Ü—/‘/ $Ó'ˆC÷	(ð ×$Ñ$Ó&ˆØ�|‰|ÐUÒUÐUÐUØ	�:Ò	Ü×Ñ˜JÔ'Ø�‰˜ÔØˆà‘1ˆv€HØÐ)Ñ)Ø! $™×*Ñ*×2Ñ2°4Ó8ˆ�‰ä×Ñ˜#˜xÕ(÷G	;ð 	;ú÷(	(ð 	(ús   Ã&I*Æ:I6É*I3É6I?Úresultr}   Úcompressionc                 ót  — |dk(  r�t        j                  t        | «      «      5 }t        j                  t        |«      «      5 }t        |j	                  «       |j	                  «       d¬«      D ]   \  }}|j
                  |j
                  k(  rŒ J ‚ 	 ddd«       ddd«       y|dk(  rÚt        j                  t        | «      ¬«      5 }t        j                  t        |«      ¬«      5 }t        |j                  «       |j                  «       d¬«      D ][  \  }	}
|j                  |	«      }|j                  |
«      }|du |du k(  sJ ‚|€Œ6|€Œ9|j                  «       |j                  «       k(  rŒ[J ‚ 	 ddd«       ddd«       y| |k(  sJ ‚y# 1 sw Y   ŒùxY w# 1 sw Y   yxY w# 1 sw Y   Œ2xY w# 1 sw Y   yxY w)a  
    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
    ÚzipT)ÚstrictNÚ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˜   s   s¶  € ð �eÒô �O‰OœG F›OÓ,ð	4Ø03Ü�O‰OœG HÓ-Ó.ð	4à25ä&)¨#¯,©,«.¸#¿,¹,».ÐQUÔ&Vò 4Ñ"�˜(Ø—|‘| x§|¡|Ó3Ð3Ð3ñ4÷		4÷ 	4ð 	4ð 
˜Ò	ä�L‰L¤¨£Ô1ð	FØ5<Ü�L‰L¤¨Ó!2Ô3ð	Fà7>ä.1Ø×"Ñ"Ó$ g×&8Ñ&8Ó&:À4ô/ò FÑ*�˜lð &×1Ñ1°,Ó?�Ø '× 3Ñ 3°LÓ A�Ø# tÐ+°À$Ð1FÒGÐGÐGØÑ*¨}Ñ/HØ&×+Ñ+Ó-°×1CÑ1CÓ1EÓEÐEÐEñF÷		F÷ 	Fð 	Fð ˜Ò!Ð!Ñ!÷)	4ð 	4ú÷ 	4ð 	4ú÷	Fð 	Fú÷ 	Fð 	Fúsa   ¤FÁA
F
ÂF
ÂFÃ F.Ã'A F"ÅF"Å!F"Å-F"Å1F.Æ
F	ÆFÆFÆ"F+	Æ'F.Æ.F7Úencodingúutf-8Úcp1251c                 ó\  — t        j                  dt        j                  d«      j	                  d«      z  t        j
                  t        d«      «      t        j
                  t        d«      D �cg c]  }d|› �‘Œ	 c}«      ¬«      }d|i}|d	k(  rd
|d<   t        «       }|j                  |||d¬«       d}|j                  |||¬«       | j                  «       }	|j                  «       }
t        |	|
|«       t        j                  |d||¬«      }t        j                  ||«       ||   }d|d<   |d|› �z  }|j                  |||¬«       | j                  «       }	|j                  «       }
t        |	|
|«       t        j                  |dd|¬«      }t        j                  ||«       yc c}w )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   )é   é   ÚABCDrž   zi-)Úcolumnsr?   ÚmethodÚgzipr1   ÚmtimeÚwb)r€   r™   Úmodeúgs://test/test.csv)r€   r™   r   )rA   r€   r™   Úinferú.N)r[   r\   r]   ÚarangeÚreshapeÚIndexÚlistÚranger   r`   Úgetvaluer˜   ra   re   rt   )r   Úcompression_onlyr™   Úcompression_to_extensionÚiÚdfr€   ÚbufferÚpath_gcsr�   r}   Úread_dfÚfile_exts                r   Ú$test_to_csv_compression_encoding_gcsr¸   ”   sŒ  € ô 
�‰ØŒb�i‰i˜‹n×$Ñ$ WÓ-Ñ-Ü—‘œ˜f›Ó&Ü�h‰h¬%°«)Ö4 Q˜"˜Q˜CšÒ4Ó5ô
€Bð Ð-Ð.€KØ˜6Ò!Ø ˆ�GÑÜ‹Y€FØ‡I�Iˆf +¸Àt€IÔLð $€HØ‡I�Iˆh K¸(€IÔCØ
×
Ñ
Ó
€CØ�‰Ó €HÜ˜#˜xÐ)9Ô:ä�k‰kØ˜AÐ+;Àhô€Gô ×Ñ˜"˜gÔ&ð (Ð(8Ñ9€HØ#€K�ÑØ�!�H�:�Ñ€HØ‡I�Iˆh K¸(€IÔCà
×
Ñ
Ó
€CØ�‰Ó €HÜ˜#˜xÐ)9Ô:ä�k‰k˜(¨a¸WÈxÔX€GÜ×Ñ˜"˜gÕ&ùòC 5s   Á/F)z@ignore:The 'fastparquet' engine is deprecated:DeprecationWarningc                 óN  ‡— t        j                  d«       t        j                  d«       ddlm} t	        j
                  ddgdt        j                  gt	        j                  dd	¬
«      dœ«      } G ˆfd„d|«      }| j                  d|«       |j                  dddd¬«       y)zCRegression test for writing to a not-yet-existent GCS Parquet file.Úfastparquetr   r   )r(   r1   r2   r3   r6   r7   )r9   )r;   r<   r>   c                   ó   •— e Zd Zdˆ fd„	Zy)ú7test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystemc                 óp   •— d|vrt         ‚t        t        j                  j	                  ‰d«      |d¬«      S )NÚwztest.parquetrš   )r™   )ÚFileNotFoundErrorr   Úosr   Újoin)r   r   r¦   r   Útmpdirs       €r   r   z<test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystem.openØ   s.   ø€ Ø˜$‰Ü'Ð'ÜœŸ™Ÿ™ V¨^Ó<¸dÈWÔUÐUr   N)Úr)r   r   r    r   )rÂ   s   €r   r"   r¼   ×   s	   ø„ ö	Vr   r"   zgcsfs.GCSFileSystemr§   TN)r?   Úenginer€   )r%   r&   r	   r(   r[   r\   r]   r^   r_   rm   rn   )ru   rÂ   r(   rx   r"   s    `   r   Útest_to_parquet_gcs_new_filerÅ   Å   s”   ø€ ô
 ×Ñ˜Ô&Ü
×Ñ˜Ô å)ä
�,‰,à�q�6Øœ2Ÿ6™6�]Ü—-‘- °aÔ8ñ	
ó€CöVÐ.ô Vð ×ÑÐ-Ð/@ÔAØ‡N�NØ D°ÈDð õ r   r   c                  óŠ   — t        j                  t        «      5  t        j                  d«       d d d «       y # 1 sw Y   y xY w)Nr§   )re   Úexternal_error_raisedÚImportErrorr[   ra   r   r   r   Útest_gcs_not_present_exceptionrÉ   ã   s2   € ä	×	!Ñ	!¤+Ó	.ñ *Ü
�‰Ð(Ô)÷*÷ *ñ *ús	   š9¹A)#Úior   rÀ   rL   rŠ   r†   Únumpyr]   r%   Úpandas.compat.pyarrowr   Úpandas.errorsr   Úpandasr[   Úpandas._testingÚ_testingre   Úpandas.utilr   ÚtdÚfixturer   ri   Ú
single_cpuÚfilterwarningsÚparametrizer~   Úbytesr=   r˜   r¸   rÅ   Úskip_if_installedrÉ   r   r   r   ú<module>rÙ      s$  ðÝ Û 	Û Û Û ã Û å 6Ý (ã Ý Ý .ð ‡�ñó ðð2 ‡�×ÑØ‡�×ÑØHóð ‡�×Ñ˜Ò#RÓSñ?)ó Tóó ð
?)ðD" %ð "°5ð "Àsó "ðB ‡�×Ñ˜ g¨xÐ%8Ó9ñ-'ó :ð-'ð` ‡�×ÑØFóñóðð6 €×Ñ�gÓñ*ó ñ*r   