
    3jS                     N    S SK r S SKrS SKJr  S SKJr  S SKJr   " S S\5      rg)    N)unquote)AbstractFileSystem)stringify_pathc                      ^  \ rS rSrSrSrU 4S jr\S 5       rSS jr	S r
    SS	 jr\SS\S
\S-  4S jj5       rSrU =r$ )DataFileSystem	   zA 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                 &   > [         TU ]  " S0 UD6  g)z!No parameters for this filesystemN )super__init__)selfkwargs	__class__s     U/home/wildlama/miniconda3/lib/python3.13/site-packages/fsspec/implementations/data.pyr   DataFileSystem.__init__   s    "6"    c                    [        U[        5      (       a!  U Vs/ s H  o R                  U5      PM     sn$ [        U5      nUR	                  S5      (       a  USS  nU$ UR	                  S5      (       a  USS  nU$ s  snf )Nzdata://   data:   )
isinstancelist_strip_protocolr   
startswith)clspathps      r   r   DataFileSystem._strip_protocol   s    dD!!489Dq''*D99d#??9%%8D
 	 __W%%8D  :s   A<Nc                     UR                  SS5      u  pVUR                  S5      (       a  [        R                  " U5      X# $ [	        U5      R                  5       X# $ )N,   base64)splitendswithr#   	b64decoder   encode)r   r   startendr   prefr	   s          r   cat_fileDataFileSystem.cat_file(   sQ    ZZQ'
==""##D)%44t}##%e00r   c                     UR                  SS5      u  p4U R                  U5      nUR                  SS5      S   R                  SS5      S   nU[        U5      SUS.$ )Nr!   r"   :;r   file)namesizetypemimetype)r$   r+   len)r   r   r   r*   r1   r	   mimes          r   infoDataFileSystem.info.   s\    ZZQ'
}}T"zz#q!!$**3215c$iTRRr   c                 n    SU;  a  [        S5      e[        R                  " U R                  U5      5      $ )NrzRead only filesystem)
ValueErrorioBytesIOr+   )r   r   mode
block_size
autocommitcache_optionsr   s          r   _openDataFileSystem._open4   s/     d?344zz$---..r   r6   c                 h    SU=(       d    S S[         R                  " U 5      R                  5        3$ )zvFormat the given data into data-URL syntax

This version always base64 encodes, even when the data is ascii/url-safe.
r    z;base64,)r#   	b64encodedecode)r	   r6   s     r   r'   DataFileSystem.encodeA   s0     tzrl(6+;+;D+A+H+H+J*KLLr   r   )NN)rbNTN)N)__name__
__module____qualname____firstlineno____doc__protocolr   classmethodr   r+   r7   rB   staticmethodbytesstrr'   __static_attributes____classcell__)r   s   @r   r   r   	   sp    	 H# 
 
1S / MU M#* M Mr   r   )	r#   r<   urllib.parser   fsspecr   fsspec.utilsr   r   r   r   r   <module>rY      s#     	   % '>M' >Mr   