§
    ªöÉgÂ  ã                   óæ  — 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mZmZmZmZmZmZ d dlmZ d dlmZ ej                             d¦  «        Zej        d„ ¦   «         Zej        j        ej                             dg d	¢¦  «        d
„ ¦   «         ¦   «         Z de!de!de"fd„Z#ej                             dddg¦  «        d„ ¦   «         Z$d„ Z% ej&        d¦  «        d„ ¦   «         Z'dS )é    )Ú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                  óÞ   ‡— t          j        d¦  «         t          j        d¦  «        } t          ¦   «         Šd„ ‰_         G ˆfd„d| j        ¦  «        }|                      d|d¬¦  «         ‰S )	z"Emulate GCS using a binary buffer.ÚgcsfsÚfsspecc                  ó   — dS )NT© r   ó    úd/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/pandas/tests/io/test_gcs.pyú<lambda>zgcs_buffer.<locals>.<lambda>$   s   € ˜t€ r   c                   ó0   •— e Zd Zeˆ fd„¦   «         Zd„ ZdS )ú%gcs_buffer.<locals>.MockGCSFileSystemc                  ó2   •— ‰                      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Ð2Ð3Ð3r   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r#   )r   s   €r   ÚMockGCSFileSystemr   &   sG   ø€ € € € € Ø	ð	ð 	ð 	ð 	ñ 
Œð	ð	4ð 	4ð 	4ð 	4ð 	4r   r(   ÚgsT)Úclobber)ÚpytestÚimportorskipr   ÚcloseÚAbstractFileSystemÚregister_implementation)r   r(   r   s     @r   r   r      s”   ø€ õ Ô˜Ñ Ô Ð ÝÔ  Ñ*Ô*€Få‘”€JØ#�|€JÔð4ð 4ð 4ð 4ð 4ð 4ð 4˜FÔ5ñ 4ô 4ð 4ð ×"Ò" 4Ð):ÀDÐ"ÑIÔIÐIàÐr   Úformat)ÚcsvÚjsonÚparquetÚexcelÚmarkdownc           	      óD  ‡— t          ddgdt          j        gddgt          dd¬¦  «        d	œ¦  «        }d
|› �}|dk    r,|                     |d¬¦  «         t          |dgd¬¦  «        }�nŸ|dk    r,d}|                     |¦  «         t          |dgd¬¦  «        }�nm|dk    r)|                     |¦  «         t          |dg¬¦  «        }�n>|dk    �rt          j        d¦  «         t          j        d¦  «        Š G ˆfd„d‰j        ¦  «        }|                     t          j                             t            t"          d¬¦  «        ¦  «         |                     ¦   «         5 }	|	                     ‰d|¦  «         |                     |¦  «         t+          |¦  «        }ddd¦  «         n# 1 swxY w Y   |                     ¦   «         }
|
j        dk    sJ ‚n1|dk    r+t          j        d ¦  «         |                     |¦  «         |}t3          j        ||¦  «         dS )!zE
    Test that many to/read functions support GCS.

    GH 33987
    é   é   ç       @ÚtÚsú
2018-06-18é   ©Úperiods©ÚintÚfloatÚstrÚdtzgs://test/test.r1   T)ÚindexrD   r   )Úparse_datesÚ	index_colr4   zgs://test/test.xlsxr2   )Úconvert_datesr3   Úpyarrowz
pyarrow.fsc                   ó*   •— e Zd Zeˆ fd„¦   «         ZdS )ú(test_to_read_gcs.<locals>.MockFileSystemc                 óä   •— t          d¦  «         t          j        |                      dd¦  «        ¦  «                             ¦   «                              ¦   «         }‰                     |¦  «        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_uriZ   s[   ø€ åÐ0Ñ1Ô1Ð1Ý"œ<¨¯ª°W¸bÑ(AÔ(AÑBÔB×KÒKÑMÔM×TÒTÑVÔV�Ø×,Ò,¨XÑ6Ô6Ð6r   N)r$   r%   r&   r'   rW   )rV   s   €r   ÚMockFileSystemrK   Y   s8   ø€ € € € € Øð7ð 7ð 7ð 7ñ Œ\ð7ð 7ð 7r   rX   z&pyarrow 17 broke the mocked filesystem)ÚraisesÚreasonÚ
FileSystemNz2Using pyarrow filesystem
Using pyarrow filesystem
r5   Útabulate)r   ÚnpÚnanr   Úto_csvr   Úto_excelr	   Úto_jsonr
   r+   r,   r[   ÚapplymarkerÚmarkÚxfailr   Ú	TypeErrorÚcontextÚsetattrÚ
to_parquetr   Ú
readouterrÚoutÚto_markdownÚtmÚassert_frame_equal)r   r0   ÚmonkeypatchÚcapsysÚrequestÚdf1r"   Údf2rX   ÚmÚcapturedrV   s              @r   Útest_to_read_gcsru   7   s¬  ø€ õ à�q�6Ø�2œ6�]Ø˜�:Ý˜\°1Ð5Ñ5Ô5ð		
ð 	
ñô €Cð &˜VÐ%Ð%€Dà�‚€Ø�
Š
�4˜tˆ
Ñ$Ô$Ð$Ý�t¨$¨¸1Ð=Ñ=Ô=ˆ‰Ø	�7Ò	Ð	Ø$ˆØ�Š�TÑÔÐÝ˜¨D¨6¸QÐ?Ñ?Ô?ˆ‰Ø	�6Ò	Ð	Ø�Š�DÑÔÐÝ˜¨T¨FÐ3Ñ3Ô3ˆ‰Ø	�9Ò	Ñ	ÝÔ˜IÑ&Ô&Ð&ÝÔ# LÑ1Ô1ˆð	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7˜UÔ-ñ 	7ô 	7ð 	7ð 	×ÒÝŒK×ÒÝ(Ð(Ý Ø?ð ñ ô ñ	
ô 	
ð 	
ð × Ò Ñ"Ô"ð 	% aØ�IŠI�e˜\¨>Ñ:Ô:Ð:Ø�NŠN˜4Ñ Ô Ð Ý˜tÑ$Ô$ˆCð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð ×$Ò$Ñ&Ô&ˆØŒ|ÐUÒUÐUÐUÐUÐUØ	�:Ò	Ð	ÝÔ˜JÑ'Ô'Ð'Ø�Š˜ÑÔÐØˆåÔ˜#˜sÑ#Ô#Ð#Ð#Ð#s   Å%<F-Æ-F1Æ4F1ÚresultÚexpectedÚcompressionc                 óä  — |dk    rÂt          j        t          | ¦  «        ¦  «        5 }t          j        t          |¦  «        ¦  «        5 }t          |                     ¦   «         |                     ¦   «         ¦  «        D ]\  }}|j        |j        k    sJ ‚Œ	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS |dk    �rt          j        t          | ¦  «        ¬¦  «        5 }t          j        t          |¦  «        ¬¦  «        5 }t          |                     ¦   «         |                     ¦   «         ¦  «        D ]k\  }	}
| 	                    |	¦  «        }| 	                    |
¦  «        }|du |du k    sJ ‚|�.|�,| 
                    ¦   «         | 
                    ¦   «         k    sJ ‚Œl	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS | |k    sJ ‚dS )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
    ÚzipNÚtar)Úfileobj)ÚzipfileÚZipFiler   rz   ÚinfolistÚCRCÚtarfiler   Ú
getmembersÚextractfileÚread)rv   rw   rx   Ú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   s5  € ð �eÒÐåŒ_�W V™_œ_Ñ-Ô-ð 	4°µg´oÝ�HÑÔñ7
ô 7
ð 	4àÝ&)¨#¯,ª,©.¬.¸#¿,º,¹.¼.Ñ&IÔ&Ið 4ð 4Ñ"�˜(Ø”| x¤|Ò3Ð3Ð3Ð3Ð3ð4ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð
 
˜Ò	Ñ	ÝŒ\¥'¨&¡/¤/Ð2Ñ2Ô2ð 
	F°g½w¼|Ý˜HÑ%Ô%ð@
ñ @
ô @
ð 
	FàÝ.1Ø×"Ò"Ñ$Ô$ g×&8Ò&8Ñ&:Ô&:ñ/ô /ð Fð FÑ*�˜lð &×1Ò1°,Ñ?Ô?�Ø '× 3Ò 3°LÑ AÔ A�Ø# tÐ+°À$Ð1FÒGÐGÐGÐGØÐ*¨}Ð/HØ&×+Ò+Ñ-Ô-°×1CÒ1CÑ1EÔ1EÒEÐEÐEÐEøðFð
	Fð 
	Fð 
	Fñ 
	Fô 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Føøøð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fñ 
	Fô 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Føøøð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð 
	Fð ˜Ò!Ð!Ð!Ð!Ð!Ð!sm   ¨"B<Á
AB$ÂB<Â$B(	Â(B<Â+B(	Â,B<Â<C ÃC Ã2#GÄB!GÆ7GÇG	ÇGÇ
G	ÇGÇGÇ"GÚencodingúutf-8Úcp1251c           
      ó�  — t          dt          j        d¦  «                             d¦  «        z  t	          t          d¦  «        t          ¬¦  «        t	          d„ t          d¦  «        D ¦   «         t          ¬¦  «        ¬¦  «        }d	|i}|d
k    rd|d<   t          ¦   «         }| 	                    |||d¬¦  «         d}| 	                    |||¬¦  «         |  
                    ¦   «         }| 
                    ¦   «         }	t          ||	|¦  «         t          |d||¬¦  «        }
t          j        ||
¦  «         ||         }d|d	<   |d|› �z  }| 	                    |||¬¦  «         |  
                    ¦   «         }| 
                    ¦   «         }	t          ||	|¦  «         t          |dd|¬¦  «        }
t          j        ||
¦  «         dS )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)Údtypec                 ó   — g | ]}d |› �‘ŒS )zi-r   )Ú.0Úis     r   ú
<listcomp>z8test_to_csv_compression_encoding_gcs.<locals>.<listcomp>¡   s   € Ð1Ð1Ð1 !�X˜!�X�XÐ1Ð1Ð1r   r•   )ÚcolumnsrE   ÚmethodÚgzipr7   ÚmtimeÚwb)rx   r�   Úmodeúgs://test/test.csv)rx   r�   r   )rG   rx   r�   Úinferú.N)r   r]   ÚarangeÚreshaper   ÚlistÚobjectÚranger   r_   Úgetvaluer�   r   rl   rm   )r   Úcompression_onlyr�   Úcompression_to_extensionÚdfrx   ÚbufferÚpath_gcsr†   rw   Úread_dfÚfile_exts               r   Ú$test_to_csv_compression_encoding_gcsr³   ”   sÜ  € õ 
Ø�bŒi˜‰nŒn×$Ò$ WÑ-Ô-Ñ-Ý•d˜6‘l”l­&Ð1Ñ1Ô1ÝÐ1Ð1¥u¨R¡y¤yÐ1Ñ1Ô1½Ð@Ñ@Ô@ð
ñ 
ô 
€Bð Ð-Ð.€KØ˜6Ò!Ð!Ø ˆ�GÑÝ‰YŒY€FØ‡I‚Iˆf +¸Àt€IÑLÔLÐLð $€HØ‡I‚Iˆh K¸(€IÑCÔCÐCØ
×
Ò
Ñ
Ô
€CØ�ŠÑ Ô €HÝ˜#˜xÐ)9Ñ:Ô:Ð:åØ˜AÐ+;Àhðñ ô €Gõ Ô˜"˜gÑ&Ô&Ð&ð (Ð(8Ô9€HØ#€K�ÑØ��H��Ñ€HØ‡I‚Iˆh K¸(€IÑCÔCÐCà
×
Ò
Ñ
Ô
€CØ�ŠÑ Ô €HÝ˜#˜xÐ)9Ñ:Ô:Ð:å�x¨1¸'ÈHÐUÑUÔU€GÝÔ˜"˜gÑ&Ô&Ð&Ð&Ð&r   c           	      óH  ‡— t          j        d¦  «         t          j        d¦  «         ddlm} t	          ddgdt
          j        gdd	gt          d
d¬¦  «        dœ¦  «        } G ˆfd„d|¦  «        }|                      d|¦  «         | 	                    dddd¬¦  «         dS )zCRegression test for writing to a not-yet-existent GCS Parquet file.Úfastparquetr   r   )r.   r7   r8   r9   r:   r;   r<   r=   r>   r@   c                   ó   •— e Zd Zdˆ fd„	ZdS )ú7test_to_parquet_gcs_new_file.<locals>.MockGCSFileSystemÚrc                 óz   •— d|vrt           ‚t          t          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Ö   s7   ø€ Ø˜$ˆˆÝ'Ð'Ý�œŸš V¨^Ñ<Ô<¸dÈWÐUÑUÔUÐUr   N)r¸   )r$   r%   r&   r   )r¾   s   €r   r(   r·   Õ   s;   ø€ € € € € ð	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vr   r(   zgcsfs.GCSFileSystemr£   TN)rE   Úenginerx   )
r+   r,   r   r.   r   r]   r^   r   rg   rh   )rn   r¾   r.   rq   r(   s    `   r   Útest_to_parquet_gcs_new_filerÀ   Å   sþ   ø€ å
Ô˜Ñ&Ô&Ð&Ý
Ô˜Ñ Ô Ð à)Ð)Ð)Ð)Ð)Ð)å
à�q�6Ø�2œ6�]Ø˜�:Ý˜\°1Ð5Ñ5Ô5ð		
ð 	
ñô €CðVð Vð Vð Vð Vð Vð VÐ.ñ Vô Vð Vð ×ÒÐ-Ð/@ÑAÔAÐAØ‡N‚NØ D°ÈDð ñ ô ð ð ð r   r   c                  óˆ   — t          j        t          ¦  «        5  t          d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr£   )rl   Úexternal_error_raisedÚImportErrorr   r   r   r   Útest_gcs_not_present_exceptionrÄ   á   s†   € å	Ô	!¥+Ñ	.Ô	.ð 'ð 'ÝÐ%Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's   š7·;¾;)(Úior   r¼   rO   r�   r}   Únumpyr]   r+   Úpandas.compat.pyarrowr   Úpandasr   r   r   r   r	   r
   r   Úpandas._testingÚ_testingrl   Úpandas.utilr   Útdrc   ÚfilterwarningsÚ
pytestmarkÚfixturer   Ú
single_cpuÚparametrizeru   ÚbytesrC   r�   r³   rÀ   Úskip_if_installedrÄ   r   r   r   ú<module>rÔ      sÿ  ðØ Ð Ð Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ø €€€à 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .àŒ[×'Ò'ØCñô €
ð
 „ðð ñ „ðð2 „ÔØ„×Ò˜Ð#RÐ#RÐ#RÑSÔSð9$ð 9$ñ TÔSñ Ôð9$ðx" %ð "°5ð "Àsð "ð "ð "ð "ð> „×Ò˜ g¨xÐ%8Ñ9Ô9ð-'ð -'ñ :Ô9ð-'ð`ð ð ð8 €Ô�gÑÔð'ð 'ñ Ôð'ð 'ð 'r   