o
    hQ                     @   sJ   d dl mZ d dlmZ d dlZd dlmZ d dlmZ G dd dZ	dS )    )md5)productNmake_path_posix)GLOB_EDGE_CASES_TESTSc                   @   s   e Z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ed ed dd Zdd Zdd Zdd Zdd Zdd ZdS ) AbstractGetTestsc                 C   s   |}|}| | ||sJ ||d}	||d}
|||d| ||	s*J |||dd| ||
s;J ||	|
g ||	rIJ ||
rPJ |||d|d  ||sbJ ||	siJ |||dd|d  ||
s|J d S )Nfile2subfile1subdir/)mkdirisdirgetisfilermexists)selffsfs_joinfs_bulk_operations_scenario_0local_fs
local_joinlocal_targetsourcetargettarget_file2target_subfile1 r   m/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/fsspec/tests/abstract/get.py#test_get_file_to_existing_directory   s$   



z4AbstractGetTests.test_get_file_to_existing_directoryc           	      C   sh   |}|}| | |||dd||d ||sJ |||ds'J |||dds2J d S )Nr
   r	   znewdir/newdirr   r   r   r   	r   r   r   r   r   r   r   r   r   r   r   r   test_get_file_to_new_directory3   s   

z/AbstractGetTests.test_get_file_to_new_directoryc           	      C   sD   |}|}| | |||dd||d |||ds J d S )Nr
   r	   newfile)r   r   r   r"   r   r   r   +test_get_file_to_file_in_existing_directoryJ   s
   

z<AbstractGetTests.test_get_file_to_file_in_existing_directoryc           	      C   s\   |}|}| | |||dd||dd |||ds!J |||dds,J d S )Nr
   r	   r    r$   r!   r"   r   r   r   &test_get_file_to_file_in_new_directory\   s   



z7AbstractGetTests.test_get_file_to_file_in_new_directoryc                 C   s  |}|}| | ||sJ tddgddgD ]J\}	}
||d}|	r)|d7 }|
r/|d n|}||| ||g ks@J |j||dd |	r|||dsTJ |||ds^J |||dshJ |||dd	ssJ |||dr}J |j||d||d||dgdd nA|||dsJ |||ddsJ |||ddsJ |||ddsJ |||ddd	sJ |j||ddd ||g ksJ |j||dd
d |	r!|||dsJ |||dsJ |||drJ |||drJ |j||d||dgdd n9|||ds,J |||dds8J |||ddsDJ |||ddrPJ |j||ddd ||g ksdJ qd S )NFTr
   r   	recursiver	   subfile2	nesteddir
nestedfile   r(   maxdepth)r   r   zipr   lsr   r   r   r   r   r   r   r   r   r   r   r   source_slashtarget_slashstr   r   r   (test_get_directory_to_existing_directoryr   sj   


	z9AbstractGetTests.test_get_directory_to_existing_directoryc                 C   s  |}|}| | tddgddgD ]\}	}
||d}|	r!|d7 }||d}|
r,|d7 }||| ||g ks;J |j||dd |||dsMJ |||ddsXJ |||ddscJ |||dd	snJ |||dd	d
szJ |||drJ |j||ddd ||g ksJ |j||ddd |||dsJ |||ddsJ |||ddsJ |||dd	rJ |||drJ |j||ddd |||drJ qd S )NFTr
   r   r    r'   r	   r)   r*   r+   r,   r-   )r   r/   r   r0   r   r   r   r   r1   r   r   r   #test_get_directory_to_new_directory   s@   



z4AbstractGetTests.test_get_directory_to_new_directoryc                 C   sL  |}|}| | dD ]}	|	r|d n|}
|||dd|
 |||ds*J |||ds4J |||dr>J |||ddrIJ |||drSJ |j||d||dgd	d
 ||g kskJ tddgd	dgD ]\}}|j||d||
|d
 |||dsJ |||dsJ |||dsJ |||ddsJ |||drJ |j||d||d||dgd	d
 ||g ksJ |j||d||
|dd |||dsJ |||dsJ |||drJ |||dr	J |j||d||dgd	d
 ||g ks"J qtqd S )NFTr   r
   *r	   r)   r*   r+   Tr'   **Fr,   r-   )r   r   r   r   r   r   r0   r/   r   r   r   r   r   r   r   r   r   r3   r5   globr(   r   r   r   #test_get_glob_to_existing_directory   sb   


z4AbstractGetTests.test_get_glob_to_existing_directoryc              	   C   s  |}|}| | dD ]Z}	||d}
|	r|
d7 }
|||dd|
 |||ds-J |||dds8J |||ddsCJ |||ddrNJ |||ddd	rZJ |||drdJ |||ddroJ |j||dd
d ||g ksJ tddgd
dgD ]\}}|j||d||
|d |||dsJ |||ddsJ |||ddsJ |||ddsJ |||ddd	sJ |||drJ |||ddrJ |j||dd
d |||drJ |j||d||
|dd |||dsJ |||ddsJ |||dds+J |||ddr7J |||drBJ |||ddrNJ |j|j|ddd
d |||dreJ qqd S )Nr8   r    r   r
   r9   r	   r)   r*   r+   Tr'   r:   Fr,   r-   )detail)r   r   r   r   r   r   r0   r/   r;   r   r   r   test_get_glob_to_new_directory=  sZ   



z/AbstractGetTests.test_get_glob_to_new_directoryargnames	argvaluesc              	      s   |}|
t ddgddgD ]^\}}| |r dn}|r%|d n|}|j||||||d |}|rE fdd|D }n
 fdd|D }t|t|ksYJ z	|jdd	 W q tyk   Y qw d S )
NTFr    r   r-   c                    s   g | ]
}t  d |qS )r    r   .0pr   r   r   r   
<listcomp>  s    z=AbstractGetTests.test_get_glob_edge_cases.<locals>.<listcomp>c                    s   g | ]	}t  |qS r   r   rB   rE   r   r   rF     s    r'   )r   r   r   findsortedr   FileNotFoundError)r   pathr(   r.   expectedr   r   fs_glob_edge_cases_filesr   r   r   r   new_dirr3   r5   outputprefixed_expectedr   rE   r   test_get_glob_edge_cases~  s,   

z)AbstractGetTests.test_get_glob_edge_casesc                 C   s   |}|}| | ||d||d||ddg}	dD ]J}
|
r"|d n|}||	| |||ds4J |||ds>J |||dsHJ |j||d||d||dgdd ||g ksdJ qd S )	Nfile1r   r
   r	   r8   r   Tr'   )r   r   r   r   r0   )r   r   r   r   r   r   r   r   r   source_filesr3   r5   r   r   r   ,test_get_list_of_files_to_existing_directory  s,   


z=AbstractGetTests.test_get_list_of_files_to_existing_directoryc           
      C   s   |}|}| | ||d||d||ddg}	||	||dd  |||ds-J |||dds8J |||ddsCJ |||ddsNJ d S )NrQ   r   r
   r	   r    r   r!   )
r   r   r   r   r   r   r   r   r   rR   r   r   r   'test_get_list_of_files_to_new_directory  s   


z8AbstractGetTests.test_get_list_of_files_to_new_directoryc                 C   sN  ||d}||d}| | || |}	||	rJ tdD ]I}
|j||	dd ||	s2J |
dkrK|||	ds@J |||	drJJ q!|||	dsUJ |||	ds_J |||	ddsjJ q!|j|	dd ||	ryJ tdD ]'}
|j|d |	dd ||	sJ |||	dsJ |||	drJ q}d S )Nsrcfile   Tr'   r   r   )r   touchr   ranger   r   r   r   )r   r   r   fs_pathr   r   r   rU   src_filer   loopr   r   r   test_get_directory_recursive  s.   



z-AbstractGetTests.test_get_directory_recursivec           	      C   s   |}|}|j ||d|dd |||dsJ |||dr#J |||dg ||g ks5J |j ||d|dd |||dsJJ |||ddsUJ |||ds_J d S )Nr
   Tr'   zsubfile.txtz
subdir.txtzsubdir*)r   r   r   r0   r   )	r   r   r   r   r   r   %fs_dir_and_file_with_same_name_prefixr   r   r   r   r   6test_get_directory_without_files_with_same_name_prefix  s   
zGAbstractGetTests.test_get_directory_without_files_with_same_name_prefixc                 C   s   |}|}g }	g }
t dD ]%}tt|d }|	||| d |
t||| d q|j|	|
d t dD ]}||
| 	d}|t|ksQJ q=d S )N
   zutf-8z.txt)rpathlpath)
rY   r   strencode	hexdigestappendr   r   catdecode)r   r   r   r   r   r   fs_10_files_with_hashed_namesr   r   rR   destination_filesihashed_ifile_contentr   r   r   ,test_get_with_source_and_destination_as_list/  s   
z=AbstractGetTests.test_get_with_source_and_destination_as_listN)__name__
__module____qualname__r   r#   r%   r&   r6   r7   r=   r?   pytestmarkparametrizer   rP   rS   rT   r]   r_   rn   r   r   r   r   r   
   s&    (O4HA
*'$r   )
hashlibr   	itertoolsr   rr   fsspec.implementations.localr   fsspec.tests.abstract.commonr   r   r   r   r   r   <module>   s    