U
    âÇ-e³3  ã                   @   s  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Zd dlZd dlmZ d dlmZ d dlmZmZmZ d dlmZ zd dlmZ W n ek
r¬   Y nX d	d
„ Zdd„ ZejjG dd„ dƒƒZG dd„ deej ƒZ!dd„ Z"ejjejj#ejj$ejj%dd„ ƒƒƒƒZ&dS )é    N)ÚBytesIO)Újoin)Úutil)Ú_test_dataframe)Ú _test_read_common_metadata_filesÚ&_test_write_to_dataset_with_partitionsÚ$_test_write_to_dataset_no_partitions)Úguid)Úassert_frame_equalc                  C   s2   t  ¡ s.d} tj d¡r$t | ¡ n
t | ¡ d S )NzNo libhdfs available on systemZ!PYARROW_HDFS_TEST_LIBHDFS_REQUIRE)ÚpaZhave_libhdfsÚosÚenvironÚgetÚpytestZfailÚskip)Úmessage© r   úX/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/test_hdfs.pyÚcheck_libhdfs_present/   s
    r   c               
   C   s‚   t j dd¡} t j dd ¡}ztt j dd¡ƒ}W n tk
rN   tdƒ‚Y nX t t¡ tj	 
| ||¡W  5 Q R £ S Q R X d S )NÚARROW_HDFS_TEST_HOSTÚdefaultZARROW_HDFS_TEST_USERÚARROW_HDFS_TEST_PORTr   ú4Env variable ARROW_HDFS_TEST_PORT was not an integer)r   r   r   ÚintÚ
ValueErrorr   ZwarnsÚFutureWarningr   ÚhdfsÚconnect)ÚhostÚuserÚportr   r   r   Úhdfs_test_client8   s    r!   c                   @   sD  e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zejjejjd)d*„ ƒƒZejjejjd+d,„ ƒƒZejjejjd-d.„ ƒƒZejjejjd/d0„ ƒƒZejjejjd1d2„ ƒƒZ ejjejjd3d4„ ƒƒZ!d5S )6ÚHdfsTestCasesc              	   C   sF   t | j|ƒ}| |¡ t ||ƒ}| |d¡}| |¡ W 5 Q R X |S )NÚwb)ÚpjoinÚtmp_pathÚmkdirÚopenÚwrite)Úselfr   Z	test_nameZ	test_pathÚ	test_dataÚ	base_pathÚ	full_pathÚfr   r   r   Ú_make_test_fileH   s    

zHdfsTestCases._make_test_filec                 C   s6   |   ¡  tƒ | _d t dd¡¡| _| j | j¡ d S )Nz/tmp/pyarrow-test-{}r   iè  )Úcheck_driverr!   r   ÚformatÚrandomÚrandintr%   r&   ©Úclsr   r   r   Ú
setUpClassS   s    zHdfsTestCases.setUpClassc                 C   s    | j j| jdd | j  ¡  d S )NT©Ú	recursive)r   Údeleter%   Úcloser3   r   r   r   ÚtearDownClassZ   s    zHdfsTestCases.tearDownClassc                 C   sx   t  | j¡}t  |¡}|js t‚|j| jjks2t‚|j| jjksDt‚|j| jjksVt‚|j	| jj	ksht‚| 
| j¡ d S ©N)ÚpickleÚdumpsr   ÚloadsÚis_openÚAssertionErrorr   r    r   Zkerb_ticketÚlsr%   )r)   ÚsZh2r   r   r   Útest_pickle_   s    

zHdfsTestCases.test_picklec              	   C   sP   t | jdƒ}d}| j |d¡}| |¡ W 5 Q R X | j |¡}||ksLt‚d S )Nzcat-testó	   foobarbazr#   )r$   r%   r   r'   r(   Úcatr@   )r)   ÚpathÚdatar-   Úcontentsr   r   r   Útest_catj   s    zHdfsTestCases.test_catc                 C   sJ   | j  ¡ }| j  ¡ }| j  ¡ }|dks*t‚||ks6t‚||| ksFt‚d S )Nr   )r   Zget_capacityZget_space_usedÚdfr@   )r)   ÚcapacityZ
space_usedZ	disk_freer   r   r   Útest_capacity_spacet   s    


z!HdfsTestCases.test_capacity_spacec              	   C   sF   t ƒ }|jst‚| ¡  |jr"t‚t t¡ | d¡ W 5 Q R X d S )Nú/)r!   r?   r@   r9   r   ÚraisesÚ	ExceptionrA   )r)   Úclientr   r   r   Ú
test_close}   s    

zHdfsTestCases.test_closec                 C   sX   t | jdƒ}t | jdƒ}| j |¡ | j |¡s4t‚| jj|dd | j |¡rTt‚d S )Nztest-dir/test-dirztest-dirTr6   )r$   r%   r   r&   Úexistsr@   r8   )r)   rF   Úparent_pathr   r   r   Ú
test_mkdir†   s    zHdfsTestCases.test_mkdirc              	   C   s¸   t | jdƒ}t | jdƒ}d}| j |d¡}| |¡ W 5 Q R X | j |¡sPt‚| j ||¡ | j |¡rnt‚| j |¡s~t‚| j |¡|ks’t‚| j 	||¡ | j |¡|ks´t‚d S )Nzmv-testzmv-new-testrD   r#   )
r$   r%   r   r'   r(   rR   r@   ÚmvrE   Úrename)r)   rF   Únew_pathrG   r-   r   r   r   Útest_mv_rename   s    zHdfsTestCases.test_mv_renamec              	   C   sš   t | jdƒ}t |dƒ}| j |¡ d}| j |d¡}| |¡ W 5 Q R X | j |¡}| j |¡}|d dksrt‚|d dks‚t‚|d t|ƒks–t‚d S )	Nú	info-baseÚexrD   r#   ÚkindÚ	directoryÚfileÚsize)	r$   r%   r   r&   r'   r(   Úinfor@   Úlen)r)   rF   Ú	file_pathrG   r-   Z	path_infoZfile_path_infor   r   r   Ú	test_info¢   s    
zHdfsTestCases.test_infoc              	   C   sä   t | jdƒ}t |dƒ}t |dƒ}| j |¡ | j |d¡}| d¡ W 5 Q R X | j |¡s`t‚| j |¡spt‚| j |¡r€t‚| j |¡st‚| j |¡r t‚| j |¡r°t‚| j 	|¡rÀt‚| j 	|¡sÐt‚| j 	|¡ràt‚d S )NrY   rZ   zthis-path-is-missingr#   rD   )
r$   r%   r   r&   r'   r(   rR   r@   ÚisdirÚisfile)r)   Údir_pathra   Zmissing_pathr-   r   r   r   Útest_exists_isdir_isfile³   s    

z&HdfsTestCases.test_exists_isdir_isfilec           	   
   C   s¾   t | jdƒ}t |dƒ}t |dƒ}t |dƒ}t |dƒ}| j |¡rN| j |d¡ | j |¡ | j |¡ d}|||fD ](}| j |d¡}| |¡ W 5 Q R X qt| j |¡t	|ƒd	 ksºt
‚d S )
Nzdisk-usage-baseÚp1Úp2ÚsubdirÚp3TrD   r#   é   )r$   r%   r   rR   r8   r&   r'   r(   Ú
disk_usager`   r@   )	r)   rF   rg   rh   ri   rj   rG   ra   r-   r   r   r   Útest_disk_usageÈ   s    



zHdfsTestCases.test_disk_usagec                 C   sv   t | jdƒ}| j |¡ t |dƒ}t |dƒ}| j |¡ | j |d¡}| d¡ t| j |d¡ƒ}|||gksrt‚d S )Nzls-testza-dirza-file-1r#   ó
   aaaaaaaaaaF)	r$   r%   r   r&   r'   r(   ÚsortedrA   r@   )r)   r+   re   Zf1_pathr-   rH   r   r   r   Útest_lsÞ   s    


zHdfsTestCases.test_lsc              	   C   s4   t | jdƒ}| j |d¡}| d¡ W 5 Q R X d S )Nz
chmod-testr#   rn   )r$   r%   r   r'   r(   )r)   rF   r-   r   r   r   Útest_chmod_chowní   s    zHdfsTestCases.test_chmod_chownc                 C   sb   t | jdƒ}d}t|ƒ}| d¡ | j ||¡ tƒ }| j ||¡ | d¡ | ¡ |ks^t‚d S )Nzupload-testrD   r   )	r$   r%   r   Úseekr   ÚuploadÚdownloadÚgetvaluer@   )r)   r+   rG   ÚbufZout_bufr   r   r   Útest_download_uploadò   s    

z"HdfsTestCases.test_download_uploadc              	   C   sx   t | jdƒ}d}| j |d¡}| |¡ W 5 Q R X | j |d¡,}| ¡ dksTt‚| d¡}||ksjt‚W 5 Q R X d S )Nzctx-managers   foor#   Úrbrk   é
   )r$   r%   r   r'   r(   r^   r@   Úread©r)   rF   rG   r-   Úresultr   r   r   Útest_file_context_manager   s    
z'HdfsTestCases.test_file_context_managerc              	   C   s2   t | jdƒ}t t¡ | j |¡ W 5 Q R X d S )Nzdoes-not-exist-123)r$   r%   r   rN   ÚFileNotFoundErrorr   r'   )r)   rF   r   r   r   Útest_open_not_exist  s    z!HdfsTestCases.test_open_not_existc              	   C   s,   t  ttf¡ | j dd¡ W 5 Q R X d S )NrM   r#   )r   rN   ÚFileExistsErrorÚIsADirectoryErrorr   r'   )r)   r   r   r   Útest_open_write_error  s    z#HdfsTestCases.test_open_write_errorc              	   C   sf   t | jdƒ}d}| j |d¡}| |¡ W 5 Q R X | j |d¡}| ¡ }W 5 Q R X ||ksbt‚d S )Nzread-whole-files¸  foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoor#   rx   )r$   r%   r   r'   r(   rz   r@   r{   r   r   r   Útest_read_whole_file  s    z"HdfsTestCases.test_read_whole_filec              
   C   sÀ   dd l m} d}d}g }t|ƒD ]}t||d}t || |d | ¡|d< |d  tj¡|d< t|d 	|¡ƒ}t
jj|d	d
}	| j |d¡}
| |	|
¡ W 5 Q R X | |	¡ q t
 |¡}|S )Nr   ry   é   ©Úseedé   ÚindexÚuint32z
{}.parquetF©Zpreserve_indexr#   )Úpyarrow.parquetÚparquetÚranger   ÚnpZarangeÚastypeÚint64r$   r0   r   ÚTableÚfrom_pandasr   r'   Úwrite_tableÚappendZconcat_tables)r)   ÚtmpdirÚpqZnfilesr^   r*   ÚirJ   rF   Útabler-   Úexpectedr   r   r   Ú_write_multiple_hdfs_pq_files"  s    
z+HdfsTestCases._write_multiple_hdfs_pq_filesc                 C   sZ   t | jdtƒ  ƒ}| j |¡ |  |¡}| j |¡}t| ¡ j	ddj
dd| ¡ ƒ d S )Nzmulti-parquet-rˆ   ©ZbyT©Zdrop)r$   r%   r	   r   r&   rš   Zread_parquetr
   Ú	to_pandasÚsort_valuesÚreset_index)r)   r•   r™   r|   r   r   r   Ú test_read_multiple_parquet_files:  s    
þz.HdfsTestCases.test_read_multiple_parquet_filesc                 C   sl   dd l m} t| jdtƒ  ƒ}| j |¡ |  |¡}t|ƒ}| 	|¡}t
| ¡ jddjdd| ¡ ƒ d S )Nr   zmulti-parquet-uri-rˆ   r›   Trœ   )r‹   rŒ   r$   r%   r	   r   r&   rš   Ú_get_hdfs_uriÚ
read_tabler
   r   rž   rŸ   )r)   r–   r•   r™   rF   r|   r   r   r   Ú)test_read_multiple_parquet_files_with_uriJ  s    

þz7HdfsTestCases.test_read_multiple_parquet_files_with_uric                 C   s¢   dd l m} t| jdtƒ  ƒ}| j |¡ tt|dƒƒ}d}t|dd}|d  	t
j¡|d< tjj|dd}|j||| jd	 |j|| jd
d ¡ }t||ƒ d S )Nr   zuri-parquet-ztest.parquetr„   r…   r‰   FrŠ   ©Ú
filesystemT)r¥   Zuse_legacy_dataset)r‹   rŒ   r$   r%   r	   r   r&   r¡   r   r   rŽ   r   r   r‘   r’   r“   r¢   r   r
   )r)   r–   r•   rF   r^   rJ   r˜   r|   r   r   r   Ú&test_read_write_parquet_files_with_uri\  s      ÿ
z4HdfsTestCases.test_read_write_parquet_files_with_uric                 C   s.   t | jdtƒ  ƒ}| j |¡ t| j|ƒ d S )Nzcommon-metadata-)r$   r%   r	   r   r&   r   ©r)   r•   r   r   r   Útest_read_common_metadata_filess  s    z-HdfsTestCases.test_read_common_metadata_filesc                 C   s0   t | jdtƒ  ƒ}| j |¡ t|| jd d S )Nzwrite-partitions-r¤   )r$   r%   r	   r   r&   r   r§   r   r   r   Ú%test_write_to_dataset_with_partitionsz  s     ÿz3HdfsTestCases.test_write_to_dataset_with_partitionsc                 C   s0   t | jdtƒ  ƒ}| j |¡ t|| jd d S )Nzwrite-no_partitions-r¤   )r$   r%   r	   r   r&   r   r§   r   r   r   Ú#test_write_to_dataset_no_partitions‚  s     ÿz1HdfsTestCases.test_write_to_dataset_no_partitionsN)"Ú__name__Ú
__module__Ú__qualname__r.   Úclassmethodr5   r:   rC   rI   rL   rQ   rT   rX   rb   rf   rm   rp   rq   rw   r}   r   r‚   rƒ   rš   r   ÚmarkÚpandasrŒ   r    r£   r¦   r¨   r©   rª   r   r   r   r   r"   E   sP   


		
r"   c                   @   s    e Zd Zedd„ ƒZdd„ ZdS )ÚTestLibHdfsc                 C   s
   t ƒ  d S r;   )r   r3   r   r   r   r/     s    zTestLibHdfs.check_driverc                 C   s,   t ƒ }|  |ddd¡}| |¡}d }d }d S )NZorphaned_file_testÚfnamerD   )r!   r.   r'   )r)   r   ra   r-   r   r   r   Útest_orphaned_file‘  s    
ÿ
zTestLibHdfs.test_orphaned_fileN)r«   r¬   r­   r®   r/   r³   r   r   r   r   r±   ‹  s   
r±   c                 C   sT   t j dd¡}ztt j dd¡ƒ}W n tk
r@   tdƒ‚Y nX d ||| ¡}|S )Nr   Ú	localhostr   r   r   zhdfs://{}:{}{})r   r   r   r   r   r0   )rF   r   r    Úurir   r   r   r¡   ›  s    r¡   c            
   	   C   s°   t ƒ  zdd l} W n tk
r0   t d¡ Y nX dd lm} t d¡}tƒ }t	 
¡ }tj |¡}d}| |d¡}| ||¡ W 5 Q R X |j||jd}| ¡ }	t|	|ƒ d S )Nr   z fastparquet test requires snappyÚfastparquetz/tmp/testing.parquetr#   )Z	open_with)r   ÚsnappyÚImportErrorr   r   r‹   rŒ   Zimportorskipr!   r   Zmake_dataframer   r‘   r’   r'   r“   ZParquetFiler   r
   )
r·   r–   r¶   ÚfsrJ   r˜   rF   r-   Zparquet_filer|   r   r   r   Útest_fastparquet_read_with_hdfs§  s     
rº   )'r   r<   r1   ZunittestÚior   Úos.pathr   r$   ÚnumpyrŽ   r   Zpyarrowr   Zpyarrow.testsr   Zpyarrow.tests.parquet.commonr   Z"pyarrow.tests.parquet.test_datasetr   r   r   Zpyarrow.utilr	   Zpandas.testingr
   r¸   r   r!   r¯   r   r"   ZTestCaser±   r¡   r°   rŒ   r¶   rº   r   r   r   r   Ú<module>   s:   	  G