Ë
    F^(h)  ã                  óÔ   — d dl mZ 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mZ d dlmZ d d	lmZ d d
lmZ  ej*                  d«      Z G d„ de«      Z G d„ de«      Zy)é    )ÚannotationsN)ÚdatetimeÚtimezone)Ú	ENOTEMPTY)ÚBytesIO)ÚPurePathÚPureWindowsPath)ÚAnyÚClassVar)ÚAbstractFileSystem)ÚLocalFileSystem)Ústringify_pathzfsspec.memoryfsc                  ó¨   — e Zd ZU dZi Zded<   dgZdZdZe	d„ «       Z
dd„Zdd	„Zdd
„Zdd„Zd„ Zd„ Z	 	 	 	 dd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zdd„Zy)ÚMemoryFileSystemz A filesystem based on a dict of BytesIO objects

    This is a global filesystem so instances of this class all point to the same
    in memory filesystem.
    zClassVar[dict[str, Any]]ÚstoreÚ Úmemoryú/c                óD  — t        |t        «      r0t        |t        «      rt        j                  |«      S t        |«      }|j                  d«      r|t        d«      d  }d|v sd|v r|j                  d«      S |j                  d«      j                  d«      }|rd|z   S dS )Nz	memory://z::z://r   r   )
Ú
isinstancer   r	   r   Ú_strip_protocolr   Ú
startswithÚlenÚrstripÚlstrip)ÚclsÚpaths     ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fsspec/implementations/memory.pyr   z MemoryFileSystem._strip_protocol   s•   € ä�dœHÔ%Ü˜$¤Ô0Ü&×6Ñ6°tÓ<Ð<ä% dÓ+�à�?‰?˜;Ô'Øœ˜KÓ(Ð*Ð+ˆDØ�4‰<˜5 D™=Ø—;‘;˜sÓ#Ð#Ø�{‰{˜3Ó×&Ñ& sÓ+ˆÙ!ˆs�T‰zÐ) rÐ)ó    c                óÌ  — | j                  |«      }|| j                  v rI|s|gS || j                  |   j                  d| j                  |   j                  j	                  «       dœgS t        «       }|dz   }g }t        | j                  «      D ]ä  }|j                  |«      sŒd|t        |«      d  vrS|j                  || j                  |   j                  d| j                  |   j                  j	                  «       dœ«       Œxt        |«      t        |«      kD  sŒ�||t        |«      d  j                  dd«      d   z   }||vsŒ¹|xs g }|j                  |dddœ«       |j                  |«       Œæ | j                  D ]Ÿ  }|j                  |«      sŒd|t        |«      d  vr,||vsŒ*|j                  |dddœ«       |j                  |«       ŒQ||t        |«      d  j                  dd«      d   z   }||vsŒz|j                  |dddœ«       |j                  |«       Œ¡ |s|| j                  v rg S t        |«      ‚|r|S t        |D �	cg c]  }	|	d   ‘Œ	 c}	«      S c c}	w )	NÚfile©ÚnameÚsizeÚtypeÚcreatedr   é   r   Ú	directory©r#   r$   r%   r#   )r   r   r$   r&   Ú	timestampÚsetÚtupler   r   ÚappendÚsplitÚaddÚpseudo_dirsÚFileNotFoundErrorÚsorted)
Úselfr   ÚdetailÚkwargsÚpathsÚstarterÚoutÚp2ÚppathÚfs
             r   ÚlszMemoryFileSystem.ls,   sa  € Ø×#Ñ# DÓ)ˆØ�4—:‘:ÑáØ�v�ð !Ø ŸJ™J tÑ,×1Ñ1Ø"Ø#Ÿz™z¨$Ñ/×7Ñ7×AÑAÓCñ	ðð ô “ˆØ˜‘*ˆØˆÜ˜Ÿ
™
Ó#ò 	)ˆBØ�}‰}˜WÕ%Ø˜b¤ W£ Ð0Ñ0à—J‘Jà$&Ø$(§J¡J¨r¡N×$7Ñ$7Ø$*Ø'+§z¡z°"¡~×'=Ñ'=×'GÑ'GÓ'Iñ	õô ˜“Wœs 7›|Ó+à# b¬¨W«¨Ð&8×&>Ñ&>¸sÀAÓ&FÀqÑ&IÑI�EØ EÒ)Ø!ši R˜ØŸ
™
à(-Ø()Ø(3ñôð Ÿ	™	 %Õ(ð1	)ð2 ×"Ñ"ò 	)ˆBØ�}‰}˜WÕ%Ø˜b¤ W£ Ð0Ñ0à ’ØŸ
™
¨B¸À;Ñ#OÔPØŸ	™	 "�ð $ b¬¨W«¨Ð&8×&>Ñ&>¸sÀAÓ&FÀqÑ&IÑI�EØ EÒ)ØŸ
™
¨E¸1ÀkÑ#RÔSØŸ	™	 %Õ(ð	)ñ Ø�t×'Ñ'Ñ'à�	Ü# DÓ)Ð)ÙØˆJÜ¨#Ö. Q�q˜“yÒ.Ó/Ð/ùÒ.s   ÉI!c                ó,  — | j                  |«      }|| j                  v s|| j                  v rt        |«      ‚| j	                  |«      j                  d«      r:| j                  | j	                  |«      «      rt        | j	                  |«      «      ‚|rD| j	                  |«      j                  d«      r$	  | j                  | j	                  |«      |fi |¤Ž |r+|| j                  vr| j                  j                  |«       y y y # t        $ r Y Œ9w xY w)Nr   )
r   r   r0   ÚFileExistsErrorÚ_parentÚstripÚisfileÚNotADirectoryErrorÚmkdirr-   )r3   r   Úcreate_parentsr5   s       r   rC   zMemoryFileSystem.mkdirl   sò   € Ø×#Ñ# DÓ)ˆØ�4—:‘:Ñ ¨×)9Ñ)9Ñ!9Ü! $Ó'Ð'Ø�<‰<˜Ó×#Ñ# CÔ(¨T¯[©[¸¿¹ÀdÓ9KÔ-LÜ$ T§\¡\°$Ó%7Ó8Ð8Ù˜dŸl™l¨4Ó0×6Ñ6°sÔ;ðØ�—
‘
˜4Ÿ<™<¨Ó-¨~ÑHÀÒHñ �D × 0Ñ 0Ñ0Ø×Ñ×#Ñ# DÕ)ð 1ˆ4øô #ò Ùðús   Â6#D Ä	DÄDc                óP   — 	 | j                  |d¬«       y # t        $ r |s‚ Y y w xY w)NT)rD   )rC   r>   )r3   r   Úexist_oks      r   ÚmakedirszMemoryFileSystem.makedirsz   s1   € ð	Ø�J‰J�t¨DˆJÕ1øÜò 	ÙØñ ð	ús   ‚ –%¤%c                ó>   — |dk(  rdnd}| j                  |||¬«       y)zSSet the bytes of given file

        Avoids copies of the data if possible
        ÚcreateÚxbÚwb)ÚmodeÚdataN)Úopen)r3   r   ÚvaluerL   r5   s        r   Ú	pipe_filezMemoryFileSystem.pipe_file�   s$   € ð
 ˜xÒ'‰t¨TˆØ�	‰	�$˜T¨ˆ	Õ.r   c                óÞ   — | j                  |«      }|dk(  ry || j                  v r>| j                  |«      s| j                  j                  |«       y t	        t
        d|«      ‚t        |«      ‚)Nr   zDirectory not empty)r   r0   r<   ÚremoveÚOSErrorr   r1   ©r3   r   s     r   ÚrmdirzMemoryFileSystem.rmdir‰   sd   € Ø×#Ñ# DÓ)ˆØ�2Š:àØ�4×#Ñ#Ñ#Ø—7‘7˜4”=Ø× Ñ ×'Ñ'¨Õ-äœiÐ)>ÀÓEÐEä# DÓ)Ð)r   c                ój  ‡— t         j                  d‰«       | j                  ‰«      Š‰| j                  v s4t	        ˆfd„t        | j                  «      | j                  z   D «       «      r‰dddœS ‰| j                  v r+| j                  ‰   }‰|j                  dt        |dd «      dœS t        ‰«      ‚)	Nzinfo: %sc              3  óF   •K  — | ]  }|j                  ‰d z   «      –— Œ y­w)r   N)r   )Ú.0Úpr   s     €r   ú	<genexpr>z(MemoryFileSystem.info.<locals>.<genexpr>™   s#   øè ø€ ò +
Ø)*ˆA�L‰L˜ ™×$ñ+
ùs   ƒ!r   r(   r)   r!   r&   r"   )
ÚloggerÚdebugr   r0   ÚanyÚlistr   r$   Úgetattrr1   )r3   r   r5   Úfilelikes    `  r   ÚinfozMemoryFileSystem.info–   s¸   ø€ Ü�‰�Z Ô&Ø×#Ñ# DÓ)ˆØ�4×#Ñ#Ñ#¤só +
Ü.2°4·:±:Ó.>À×AQÑAQÑ.Qô+
ô (
ð ØØ#ñð ð
 �T—Z‘ZÑØ—z‘z $Ñ'ˆHàØ Ÿ™ØÜ" 8¨Y¸Ó=ñ	ð ô $ DÓ)Ð)r   Nc                óÖ  — | j                  |«      }d|v r| j                  |«      rt        ‚|| j                  v rt	        |«      ‚|}t        |«      dkD  r<| j                  |«      }| j                  |«      rt        |«      ‚t        |«      dkD  rŒ<|dv rT|| j                  v r;| j                  |   }|dk(  r|j                  dd«       |S |j                  d«       |S t        |«      ‚|dv rV|dk(  r| j                  |«      rt        ‚t        | ||j                  d	«      «      }	| j                  s|	j                  «        |	S | j                  j                   }
t#        d
|
› d|›�«      ‚)NÚxr'   )ÚrbÚabzr+bre   r   é   >   rK   rJ   rJ   rM   zunsupported file mode for z: )r   Úexistsr>   r0   ÚIsADirectoryErrorr   r?   rA   r   Úseekr1   Ú
MemoryFileÚgetÚ_intransÚcommitÚ	__class__Ú__name__Ú
ValueError)r3   r   rL   Ú
block_sizeÚ
autocommitÚcache_optionsr5   Úparentr;   Úmr#   s              r   Ú_openzMemoryFileSystem._open¬   sX  € ð ×#Ñ# DÓ)ˆØ�$‰;˜4Ÿ;™; tÔ,Ü!Ð!Ø�4×#Ñ#Ñ#Ü# DÓ)Ð)ØˆÜ�&‹k˜AŠoØ—\‘\ &Ó)ˆFØ�{‰{˜6Ô"Ü% fÓ-Ð-ô �&‹k˜A‹oð Ð&Ñ&Ø�t—z‘zÑ!Ø—J‘J˜tÑ$�Ø˜4’<à—F‘F˜1˜a”Lð �ð —F‘F˜1”IØ�ä'¨Ó-Ð-Ø�\Ñ!Ø�tŠ| §¡¨DÔ 1Ü%Ð%Ü˜4  v§z¡z°&Ó'9Ó:ˆAØ—=’=Ø—‘”
ØˆHà—>‘>×*Ñ*ˆDÜÐ9¸$¸¸rÀ$ÀÐJÓKÐKr   c                ób  — | j                  |«      }| j                  |«      }| j                  |«      r6t        | || j                  |   j	                  «       «      | j                  |<   y | j                  |«      r+|| j                  vr| j                  j                  |«       y y t        |«      ‚©N)	r   rA   rj   r   ÚgetvalueÚisdirr0   r-   r1   )r3   Úpath1Úpath2r5   s       r   Úcp_filezMemoryFileSystem.cp_fileÖ   sœ   € Ø×$Ñ$ UÓ+ˆØ×$Ñ$ UÓ+ˆØ�;‰;�uÔÜ *Ø�e˜TŸZ™Z¨Ñ.×7Ñ7Ó9ó!ˆD�J‰J�uÒð �Z‰Z˜ÔØ˜D×,Ñ,Ñ,Ø× Ñ ×'Ñ'¨Õ.ð -ô $ EÓ*Ð*r   c                óÞ   — t         j                  d|«       | j                  |«      }	 t        | j                  |   j                  «       || «      S # t        $ r}t        |«      |‚d }~ww xY w)Nzcat: %s)r[   r\   r   Úbytesr   Ú	getbufferÚKeyErrorr1   )r3   r   ÚstartÚendr5   Úes         r   Úcat_filezMemoryFileSystem.cat_fileã   sf   € Ü�‰�Y Ô%Ø×#Ñ# DÓ)ˆð	1Ü˜Ÿ™ DÑ)×3Ñ3Ó5°e¸CÐ@ÓAÐAøÜò 	1Ü# DÓ)¨qÐ0ûð	1ús   ©(A Á	A,ÁA'Á'A,c                ó|   — | j                  |«      }	 | j                  |= y # t        $ r}t        |«      |‚d }~ww xY wrx   )r   r   r�   r1   ©r3   r   r„   s      r   Ú_rmzMemoryFileSystem._rmë   s@   € Ø×#Ñ# DÓ)ˆð	1Ø—
‘
˜4Ñ øÜò 	1Ü# DÓ)¨qÐ0ûð	1ús   “! ¡	;ª6¶;c                ó’   — | j                  |«      }	 | j                  |   j                  S # t        $ r}t	        |«      |‚d }~ww xY wrx   )r   r   Úmodifiedr�   r1   r‡   s      r   rŠ   zMemoryFileSystem.modifiedò   sI   € Ø×#Ñ# DÓ)ˆð	1Ø—:‘:˜dÑ#×,Ñ,Ð,øÜò 	1Ü# DÓ)¨qÐ0ûð	1úó   “, ¬	AµAÁAc                ó’   — | j                  |«      }	 | j                  |   j                  S # t        $ r}t	        |«      |‚d }~ww xY wrx   )r   r   r&   r�   r1   r‡   s      r   r&   zMemoryFileSystem.createdù   sI   € Ø×#Ñ# DÓ)ˆð	1Ø—:‘:˜dÑ#×+Ñ+Ð+øÜò 	1Ü# DÓ)¨qÐ0ûð	1úr‹   c                ó@   — | j                  |«      }|| j                  v S rx   )r   r   rT   s     r   rA   zMemoryFileSystem.isfile   s!   € Ø×#Ñ# DÓ)ˆØ�t—z‘zÐ!Ð!r   c                ób  — t        |t        «      r| j                  |«      }n|D �cg c]  }| j                  |«      ‘Œ }}| j                  |||¬«      }t	        |«      D ]H  }| j                  |«      r| j                  |«       Œ&| j                  |«      sŒ8| j                  |«       ŒJ y c c}w )N)Ú	recursiveÚmaxdepth)	r   Ústrr   Úexpand_pathÚreversedrA   Úrm_filerg   rU   )r3   r   r�   r�   rY   r6   s         r   ÚrmzMemoryFileSystem.rm  sš   € Ü�dœCÔ Ø×'Ñ'¨Ó-‰Dà59Ö:°�D×(Ñ(¨Õ+Ð:ˆDÐ:Ø× Ñ  °ÀXÐ ÓNˆÜ˜%“ò 
	ˆAØ�{‰{˜1Œ~Ø—‘˜Q•ð
 —[‘[ ”^Øà—
‘
˜1•ñ
	ùò ;s   §B,)T)F)Ú	overwrite)rd   NTN)NN)FN)ro   Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__r0   ÚprotocolÚroot_markerÚclassmethodr   r<   rC   rG   rP   rU   ra   rv   r}   r…   rˆ   rŠ   r&   rA   r•   © r   r   r   r      sŽ   … ñð ')€EÐ#Ó(Ø�$€KØ€HØ€Kàñ*ó ð*ó>0ó@*óó/ò*ò*ð2 ØØØó(LòT+ó1ò1ò1ò1ò"ôr   r   c                  óL   ‡ — e Zd ZdZdˆ fd„	Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )	rj   zÐA BytesIO which can't close and works as a context manager

    Can initialise with data. Each path should only be active once at any moment.

    No need to provide fs, path if auto-committing (default)
    c                ó8  •— t         j                  d|«       || _        || _        t	        j
                  t        j                  ¬«      | _        t	        j
                  t        j                  ¬«      | _	        |r!t        ‰| �-  |«       | j                  d«       y y )Nzopen file %s©Útzr   )r[   r\   Úfsr   r   Únowr   Úutcr&   rŠ   ÚsuperÚ__init__ri   )r3   r£   r   rM   rn   s       €r   r§   zMemoryFile.__init__  sg   ø€ Ü�‰�^ TÔ*ØˆŒØˆŒ	Ü—|‘|¤x§|¡|Ô4ˆŒÜ Ÿ™¬¯©Ô5ˆŒÙÜ‰GÑ˜TÔ"Ø�I‰I�a�Lð r   c                ó6   — | j                  «       j                  S rx   )r€   Únbytes©r3   s    r   r$   zMemoryFile.size)  s   € à�~‰~Ó×&Ñ&Ð&r   c                ó   — | S rx   rž   rª   s    r   Ú	__enter__zMemoryFile.__enter__-  s   € Øˆr   c                 ó   — y rx   rž   rª   s    r   ÚclosezMemoryFile.close0  ó   € Ør   c                 ó   — y rx   rž   rª   s    r   ÚdiscardzMemoryFile.discard3  r¯   r   c                óœ   — | | j                   j                  | j                  <   t        j                  t
        j                  ¬«      | _        y )Nr¡   )r£   r   r   r   r¤   r   r¥   rŠ   rª   s    r   rm   zMemoryFile.commit6  s,   € Ø#'ˆ�‰�‰�d—i‘iÑ Ü Ÿ™¬¯©Ô5ˆ�r   )NNN)ro   r—   r˜   r™   r§   Úpropertyr$   r¬   r®   r±   rm   Ú__classcell__)rn   s   @r   rj   rj     s5   ø„ ñõð ñ'ó ð'òòòö6r   rj   )Ú
__future__r   Úloggingr   r   Úerrnor   Úior   Úpathlibr   r	   Útypingr
   r   Úfsspecr   Úfsspec.implementations.localr   Úfsspec.utilsr   Ú	getLoggerr[   r   rj   rž   r   r   ú<module>r¿      sR   ðÝ "ã ß 'Ý Ý ß -ß  å %Ý 8Ý 'à	ˆ×	Ñ	Ð,Ó	-€ôCÐ)ô CôL!6�õ !6r   