Ë
    #täir  ã                   óˆ   — d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d„ Zd„ Z G d	„ d
e
«      Z G d„ de	«      Zy)é    N)ÚClientÚ_get_global_client)ÚWorker)Ú
filesystem)ÚAbstractBufferedFileÚAbstractFileSystem©Úinfer_storage_optionsc                 óT   — | €
t        «       S t        | t        «      r| S t        | «      S ©N)r   Ú
isinstancer   )Úclients    új/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/fsspec/implementations/dask.pyÚ_get_clientr   
   s+   € Ø€~Ü!Ó#Ð#Ü	�FœFÔ	#Øˆô �f‹~Ðó    c                  ó4   — t        t        j                  «      S r   )Úboolr   Ú
_instances© r   r   Ú
_in_workerr      s   € Ü”×!Ñ!Ó"Ð"r   c                   óp   ‡ — e Zd ZdZ	 dˆ fd„	Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Z	 	 	 	 dd
„Zd„ Zˆ xZS )ÚDaskWorkerFileSystema)  View files accessible to a worker as any other remote file-system

    When instances are run on the worker, uses the real filesystem. When
    run on the client, they call the worker to provide information or data.

    **Warning** this implementation is experimental, and read-only for now.
    c                 ó²   •— t        ‰| �  di |¤Ž |d u |d u z  st        d«      ‚|| _        || _        d | _        || _        || _        | j                  «        y )NzKPlease provide one of filesystem instance (fs) or target_protocol, not bothr   )	ÚsuperÚ__init__Ú
ValueErrorÚtarget_protocolÚtarget_optionsÚworkerr   ÚfsÚ_determine_worker)Úselfr   r   r    r   ÚkwargsÚ	__class__s         €r   r   zDaskWorkerFileSystem.__init__!   sk   ø€ ô 	‰ÑÑ"˜6Ò"Ø�d�
˜°$Ð6Ò7Üð-óð ð  /ˆÔØ,ˆÔØˆŒØˆŒØˆŒØ×ÑÕ r   c                 óJ   — t        | «      }d|v rd|v rd|d   › d|d   › �iS i S )NÚhostÚportr   Ú:r	   )ÚpathÚsos     r   Ú_get_kwargs_from_urlsz*DaskWorkerFileSystem._get_kwargs_from_urls1   s<   € ä" 4Ó(ˆØ�R‰<˜F b™LØ  F¡ ¨A¨b°©j¨\Ð:Ð;Ð;àˆIr   c                 ó
  — t        «       r>d| _        | j                  €*t        | j                  fi | j
                  xs i ¤Ž| _        y y d| _        t        | j                  «      | _        t        j                  | «      | _
        y )NTF)r   r   r    r   r   r   r   r   ÚdaskÚdelayedÚrfs©r"   s    r   r!   z&DaskWorkerFileSystem._determine_worker9   sm   € ÜŒ<ØˆDŒKØ�w‰wˆÜ$Ø×(Ñ(ñØ-1×-@Ñ-@Ò-FÀBñ�•ð ð
  ˆDŒKÜ% d§k¡kÓ2ˆDŒKÜ—|‘| DÓ)ˆD�Hr   c                 óª   — | j                   r | j                  j                  |i |¤Ž y  | j                  j                  |i |¤Žj	                  «        y r   )r   r    Úmkdirr/   Úcompute©r"   Úargsr#   s      r   r2   zDaskWorkerFileSystem.mkdirE   s@   € Ø�;Š;ØˆD�G‰G�M‰M˜4Ð* 6Ó*àˆD�H‰H�N‰N˜DÐ+ FÑ+×3Ñ3Õ5r   c                 óª   — | j                   r | j                  j                  |i |¤Ž y  | j                  j                  |i |¤Žj	                  «        y r   )r   r    Úrmr/   r3   r4   s      r   r7   zDaskWorkerFileSystem.rmK   ó@   € Ø�;Š;ØˆD�G‰G�J‰J˜Ð' Ó'àˆD�H‰H�K‰K˜Ð( Ñ(×0Ñ0Õ2r   c                 óª   — | j                   r | j                  j                  |i |¤Ž y  | j                  j                  |i |¤Žj	                  «        y r   )r   r    Úcopyr/   r3   r4   s      r   r:   zDaskWorkerFileSystem.copyQ   s@   € Ø�;Š;ØˆD�G‰G�L‰L˜$Ð) &Ó)àˆD�H‰H�M‰M˜4Ð* 6Ñ*×2Ñ2Õ4r   c                 óª   — | j                   r | j                  j                  |i |¤Ž y  | j                  j                  |i |¤Žj	                  «        y r   )r   r    Úmvr/   r3   r4   s      r   r<   zDaskWorkerFileSystem.mvW   r8   r   c                 ó¦   — | j                   r | j                  j                  |i |¤ŽS  | j                  j                  |i |¤Žj	                  «       S r   )r   r    Úlsr/   r3   r4   s      r   r>   zDaskWorkerFileSystem.ls]   sF   € Ø�;Š;Ø�4—7‘7—:‘:˜tÐ. vÑ.Ð.à�4—8‘8—;‘; Ð/¨Ñ/×7Ñ7Ó9Ð9r   c           
      ó‚   — | j                   r" | j                  j                  |f||||dœ|¤ŽS t        d| |||||dœ|¤ŽS )N)ÚmodeÚ
block_sizeÚ
autocommitÚcache_options)r    r)   r@   rA   rB   rC   r   )r   r    Ú_openÚDaskFile)r"   r)   r@   rA   rB   rC   r#   s          r   rD   zDaskWorkerFileSystem._openc   sp   € ð �;Š;Ø �4—7‘7—=‘=ØðàØ%Ø%Ø+ñð ñð ô ð ØØØØ%Ø%Ø+ñð ñð r   c                 ó  — | j                   rA| j                  ||«      5 }|j                  |«       |j                  ||z
  «      cd d d «       S | j                  j                  ||||«      j                  «       S # 1 sw Y   y xY wr   )r   rD   ÚseekÚreadr/   Úfetch_ranger3   )r"   r)   r@   ÚstartÚendÚfs         r   rI   z DaskWorkerFileSystem.fetch_range€   sk   € Ø�;Š;Ø—‘˜D $Ô'¨1Ø—‘�u”Ø—v‘v˜c E™kÓ*÷ (Ñ'ð —8‘8×'Ñ'¨¨d°E¸3Ó?×GÑGÓIÐI÷	 (Ð'ús   Ÿ%A:Á:B)NNNN)ÚrbNTN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ústaticmethodr+   r!   r2   r7   r:   r<   r>   rD   rI   Ú__classcell__©r$   s   @r   r   r      s_   ø„ ñð JNõ!ð  ñó ðò
*ò6ò3ò5ò3ò:ð ØØØóö:Jr   r   c                   ó4   ‡ — e Zd Zdˆ fd„	Zdd„Zd„ Zd„ Zˆ xZS )rE   c                 óD   •— |dk7  rt        d«      ‚t        ‰| �  di |¤Ž y )NrM   z1Remote dask files can only be opened in "rb" moder   )r   r   r   )r"   r@   r#   r$   s      €r   r   zDaskFile.__init__Š   s&   ø€ Ø�4Š<ÜÐPÓQÐQÜ‰ÑÑ"˜6Ó"r   c                  ó   — y r   r   )r"   Úfinals     r   Ú_upload_chunkzDaskFile._upload_chunk�   s   € Ør   c                  ó   — y)zCreate remote file/uploadNr   r0   s    r   Ú_initiate_uploadzDaskFile._initiate_upload’   s   € àr   c                 óf   — | j                   j                  | j                  | j                  ||«      S )z*Get the specified set of bytes from remote)r    rI   r)   r@   )r"   rJ   rK   s      r   Ú_fetch_rangezDaskFile._fetch_range–   s%   € à�w‰w×"Ñ" 4§9¡9¨d¯i©i¸ÀÓDÐDr   )rM   )F)rN   rO   rP   r   rY   r[   r]   rS   rT   s   @r   rE   rE   ‰   s   ø„ õ#ó
òöEr   rE   )r-   Údistributed.clientr   r   Údistributed.workerr   Úfsspecr   Úfsspec.specr   r   Úfsspec.utilsr
   r   r   r   rE   r   r   r   Ú<module>rc      sB   ðÛ ß 9Ý %å ß @Ý .òò#ônJÐ-ô nJôbEÐ#õ Er   