U
    hz                     @   sH   d dl Z d dlZd dlmZ d dlmZ d dlmZ G dd deZdS )    N)Optional)unquote)AbstractFileSystemc                       sZ   e Zd ZdZdZ fddZdddZdd	 ZdddZe	de
ee dddZ  ZS )DataFileSystemzA handy decoder for data-URLs

    Example
    -------
    >>> with fsspec.open("data:,Hello%2C%20World%21") as f:
    ...     print(f.read())
    b"Hello, World!"

    See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs
    datac                    s   t  jf | dS )z!No parameters for this filesystemN)super__init__)selfkwargs	__class__ M/var/www/html/venv/lib/python3.8/site-packages/fsspec/implementations/data.pyr      s    zDataFileSystem.__init__Nc                 K   s@   | dd\}}|dr,t||| S t| || S )N,   base64)splitendswithr   	b64decoder   encode)r	   pathstartendr
   prefr   r   r   r   cat_file   s    
zDataFileSystem.cat_filec                 K   sH   | dd\}}| |}| ddd  ddd }|t|d|dS )Nr   r   :;r   file)namesizetypemimetype)r   r   len)r	   r   r
   r   r   r   mimer   r   r   info!   s    
zDataFileSystem.inforbTc                 K   s    d|krt dt| |S )NrzRead only filesystem)
ValueErrorioBytesIOr   )r	   r   mode
block_sizeZ
autocommitZcache_optionsr
   r   r   r   _open'   s    	zDataFileSystem._openr   r#   c                 C   s   d|pd dt |   S )zFormat the given data into data-URL syntax

        This version always base64 encodes, even when the data is ascii/url-safe.
        zdata: z;base64,)r   	b64encodedecoder-   r   r   r   r   4   s    zDataFileSystem.encode)NN)r%   NTN)N)__name__
__module____qualname____doc__protocolr   r   r$   r,   staticmethodbytesr   strr   __classcell__r   r   r   r   r   	   s   
	    
r   )	r   r(   typingr   urllib.parser   Zfsspecr   r   r   r   r   r   <module>   s
   