U
    -eR
                     @   s$  U d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZddlm	Z	 e j
ddk	ZerjddlmZ e	je	je	je	je	jgZee	j ed< eD ]FZejejkrejej ek	redej d	 ejejed
d qeedddZejedddZ ejeedddZ!ddddZ"dS )    N)List   )compressionZs3fs)S3FileSystemCOMPRESSION_FILESYSTEMSz*A filesystem protocol was already set for z and will be overwritten.T)clobber)dataset_pathreturnc                 C   s   d| kr|  dd } | S )z
    Preprocesses `dataset_path` and removes remote filesystem (e.g. removing `s3://`).

    Args:
        dataset_path (`str`):
            Path (e.g. `dataset/train`) or remote uri (e.g. `s3://my-bucket/dataset/train`) of the dataset directory.
    z://r   )split)r    r   ^/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/datasets/filesystems/__init__.pyextract_path_from_uri!   s    r   )fsr	   c                 C   s   | dk	r| j dkrdS dS dS )z
    Validates if filesystem has remote protocol.

    Args:
        fs (`fsspec.spec.AbstractFileSystem`):
            An abstract super-class for pythonic file-systems, e.g. `fsspec.filesystem('file')` or [`datasets.filesystems.S3FileSystem`].
    NfileTF)protocol)r   r   r   r   is_remote_filesystem.   s    r   )r   srcdstc                 C   s<   t |  }|r(t| || | n| j||dd dS )z2
    Renames the file `src` in `fs` to `dst`.
    T)	recursiveN)r   shutilmoveZ_strip_protocolmv)r   r   r   is_localr   r   r   rename<   s    
r   )r	   c                   C   s@   t tjdrtj  n$dtjjd< dtjjd< t tj_dS )z
    Clear reference to the loop and thread.
    This is necessary otherwise HTTPFileSystem hangs in the ML training loop.
    Only required for fsspec >= 0.9.0
    See https://github.com/fsspec/gcsfs/issues/379
    
reset_lockNr   )	hasattrfsspecZasynr   Ziothreadloop	threadingLocklockr   r   r   r   _reset_fsspec_lockH   s
    r!   )#	importlibr   r   warningstypingr   r   Zfsspec.asyn r   util	find_specZ	_has_s3fsZs3filesystemr   ZBz2FileSystemZGzipFileSystemZLz4FileSystemZXzFileSystemZZstdFileSystemr   ZBaseCompressedFileFileSystem__annotations__Zfs_classr   registrywarnZregister_implementationstrr   ZAbstractFileSystemboolr   r   r!   r   r   r   r   <module>   s2    	