ó
    ®œ‘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   ó    Ú\C:\Users\psant\Downloads\Noiseback\school\venv\Lib\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   ø€ à�O‰O˜AÔØÐ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Ô÷4˜F×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>.MockFileSysteméY   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_uriÚ1test_to_read_gcs.<locals>.MockFileSystem.from_uriZ   sH   ø€ äÐ0Ô1Ü"Ÿ<š<¨¯©°W¸bÓ(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À  ø€ ô à�q�6Øœ2Ÿ6™6�]Ø˜�:Ü˜\°1Ñ5ñ		
ó€Cð ˜V˜HÐ%€Dà�ƒØ�
‰
�4˜tˆ
Ñ$Ü�t¨$¨¸1Ñ=ŠØ	�7Ó	Ø$ˆØ�‰�TÔÜ˜¨D¨6¸QÑ?ŠØ	�6Ó	Ø�‰�DÔÜ˜¨T¨FÑ3ŠØ	�9Ó	Ü×Ò˜IÔ&Ü×#Ò# LÓ1ˆ÷	7˜U×-Ñ-ô 	7ð 	×ÑÜ�K‰K×ÑÜ(Ô(Ü Ø?ð ð ô	
ð × Ñ Ô" aØ�I‰I�e˜\¨>Ô:Ø�N‰N˜4Ô Ü˜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  pšU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Óä�_Š_œW V›_Ô-°´g·o²oÜ�HÓô7
àÜ&)¨#¯,©,«.¸#¿,¹,».Ö&IÑ"�Ø—|‘| x§|¡|Õ3Ð3Ð3ñ 'J÷7
×-Ð-ð
 
˜Ó	Ü�\Š\¤'¨&£/Ò2°g¼w¿|º|Ü˜HÓ%ò@
àÜ.1Ø×"Ñ"Ó$ g×&8Ñ&8Ó&:ö/Ñ*�ð &×1Ñ1°,Ó?�Ø '× 3Ñ 3°LÓ A�Ø# tÐ+°À$Ð1FÓGÐGÐGØÓ*¨}Ó/HØ&×+Ñ+Ó-°×1CÑ1CÓ1EÕEÐEÐEñ/÷@
×2Ð2ð Ó!Ð!Ñ!÷%7
õ 7
ú×-Õ-ú÷@
õ @
ú×2Õ2úsa   ¦ 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      5      [	        [        S5       Vs/ s H  nSU 3PM
     sn5      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                  X†US9  U R                  5       n	UR                  5       n
[        XšU5        [        USXS9n[        R                  " X[5        X1   nSUS'   USU 3-  nUR                  X†US9  U R                  5       n	UR                  5       n
[        XšU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   )é   é   ÚABCDr�   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Ú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¶   ”   si  € ô 
ØŒb�iŠi˜‹n×$Ñ$ WÓ-Ñ-Ü”d˜6“lÓ#Ü¤u¨R¤yÓ1¢y !�r˜!˜“X¡yÑ1Ó2ñ
€Bð Ð-Ð.€KØ˜6Ó!Ø ˆ�GÑÜ‹Y€FØ‡I�Iˆf¸Àt€IÑLð $€HØ‡I�Iˆh¸(€IÑCØ
×
Ñ
Ó
€CØ�‰Ó €HÜ˜#Ð)9Ô:äØ˜AÐ+;ñ€Gô ×Ò˜"Ô&ð (Ñ9€HØ#€K�ÑØ�!�H�:�Ñ€HØ‡I�Iˆh¸(€IÑCà
×
Ñ
Ó
€CØ�‰Ó €HÜ˜#Ð)9Ô:ä�x¨1¸'ÈHÑU€GÜ×Ò˜"Õ&ùò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¨^Ó<¸dÈWÑ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‘   ø€ ä
×Ò˜Ô&Ü
×Ò˜Ô å)ä
à�q�6Øœ2Ÿ6™6�]Ø˜�:Ü˜\°1Ñ5ñ		
ó€C÷VÐ.ô Vð ×ÑÐ-Ð/@ÔAØ‡N�NØ 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ô "ð> ‡�×Ñ˜ g¨xÐ%8Ó9ñ-'ó :ð-'ò`ð8 ×Ò�gÓñ'ó ñ'r   