+
    LV-j?  ã                   ó¤   € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIt^RI	H
t
 ^RIHt ]P                  ! R4      t ! R R]
4      tR tR	 tR# )
é    N)ÚS_ISDIRÚS_ISLNK)ÚAbstractFileSystem©Úinfer_storage_optionszfsspec.sftpc                   óÄ   a a€ ] tR t^t oRtRtV 3R ltR t]R 4       t	]
R 4       tRR ltRR ltR tR	 t]
RR
 l4       tRR ltRR ltR tRR ltR tR tRtVtV ;t# )ÚSFTPFileSystemzèFiles over SFTP/SSH

Peer-to-peer filesystem over SSH using paramiko.

Note: if using this with the ``open`` or ``open_files``, with full URLs,
there is no way to tell if a path is relative, so all paths are assumed
to be absolute.
c                ó¶   <€ V P                   '       d   R# \        SV `  ! R/ VB  VP                  RR4      V n        Wn        W n        V P                  4        R# )a]  

Parameters
----------
host: str
    Hostname or IP as a string
temppath: str
    Location on the server to put files, when within a transaction
ssh_kwargs: dict
    Parameters passed on to connection. See details in
    https://docs.paramiko.org/en/3.3/api/client.html#paramiko.client.SSHClient.connect
    May include port, username, password...
NÚtemppathz/tmp© )Ú_cachedÚsuperÚ__init__Úpopr   ÚhostÚ
ssh_kwargsÚ_connect)Úselfr   r   Ú	__class__s   &&,€Úl/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/fsspec/implementations/sftp.pyr   ÚSFTPFileSystem.__init__   sF   ø€ ð �<�<ˆ<ÙÜ‰ÒÑ&˜:Ò&Ø"Ÿ™ z°6Ó:ˆŒØŒ	Ø$ŒØ�‰Žó    c                óv  € \         P                  R V P                  4       \        P                  ! 4       V n        V P
                  P                  \        P                  ! 4       4       V P
                  P                  ! V P                  3/ V P                  B  V P
                  P                  4       V n        R# )zConnecting to SFTP server %sN)ÚloggerÚdebugr   ÚparamikoÚ	SSHClientÚclientÚset_missing_host_key_policyÚAutoAddPolicyÚconnectr   Ú	open_sftpÚftp©r   s   &r   r   ÚSFTPFileSystem._connect2   ss   € Ü�‰Ð3°T·Y±YÔ?Ü×(Ò(Ó*ˆŒØ�‰×/Ñ/´×0FÒ0FÓ0HÔIØ�‰×Ò˜DŸI™IÑ9¨¯©Ò9Ø—;‘;×(Ñ(Ó*ˆŽr   c                ó&   € \        V4      R ,          # )Úpathr   )Úclsr'   s   &&r   Ú_strip_protocolÚSFTPFileSystem._strip_protocol9   s   € ä$ TÓ*¨6Õ2Ð2r   c                ód   € \        V 4      pVP                  R R4       VP                  RR4       V# )r'   NÚprotocol)r   r   )ÚurlpathÚouts   & r   Ú_get_kwargs_from_urlsÚ$SFTPFileSystem._get_kwargs_from_urls=   s-   € ä# GÓ,ˆØ�‰�˜ÔØ�‰�
˜DÔ!Øˆ
r   c                ó
  € V P                  V4      p\        P                  R V4       V P                  V4      '       d   \	        RV 24      hV'       d   V P                  V4       R# V P                  P                  W4       R# )zCreating folder %súFile exists: N)r)   r   r   ÚexistsÚFileExistsErrorÚmakedirsr#   Úmkdir)r   r'   Úcreate_parentsÚmodes   &&&&r   r6   ÚSFTPFileSystem.mkdirD   sa   € Ø×#Ñ# DÓ)ˆÜ�‰Ð)¨4Ô0Ø�;‰;�t×ÒÜ! M°$°Ð"8Ó9Ð9çØ�M‰M˜$Öà�H‰H�N‰N˜4Ö&r   c                óV  € V P                  V4      '       d   V'       g   \        R V 24      hVP                  R4      pVR,          R8X  d   RMRpV FR  pV'       g   K  V'       d   V RV 2MTpV P                  V4      '       d   K7  V P                  P	                  WS4       KT  	  R# )r2   Ú/:Né   NÚ N)r3   r4   Úsplitr#   r6   )r   r'   Úexist_okr8   ÚpartsÚnew_pathÚparts   &&&&   r   r5   ÚSFTPFileSystem.makedirsO   s…   € Ø�;‰;�t×Ò§XÜ! M°$°Ð"8Ó9Ð9à—
‘
˜3“ˆØ˜r�( cœ/‘3¨rˆãˆDß‰tß3;˜h˜Z q¨¨Ñ/À�Ø—{‘{ 8×,Ô,Ø—H‘H—N‘N 8Ö2ó	 r   c                óŠ   € V P                  V4      p\        P                  R V4       V P                  P	                  V4       R# )zRemoving folder %sN)r)   r   r   r#   Úrmdir©r   r'   s   &&r   rE   ÚSFTPFileSystem.rmdir\   s1   € Ø×#Ñ# DÓ)ˆÜ�‰Ð)¨4Ô0Ø�‰�‰�tÖr   c                ó„   € V P                  V4      pV P                  V P                  P                  V4      4      pWR &   V# )Úname)r)   Ú_decode_statr#   Ústat)r   r'   rK   s   && r   ÚinfoÚSFTPFileSystem.infoa   s;   € Ø×#Ñ# DÓ)ˆØ× Ñ  §¡§¡¨tÓ!4Ó5ˆØˆV‰Øˆr   c                óP  € \        V P                  4      '       d   R pM \        V P                  4      '       d   RpMRpRRRV P                  RVRV P                  RV P
                  R	\        P                  P                  V P                  \        P                  P                  R
7      R\        P                  P                  V P                  \        P                  P                  R
7      /pV'       d0   RP                  VP                  R4      V P                  .4      VR&   V# )Ú	directoryÚlinkÚfilerI   r=   ÚsizeÚtypeÚuidÚgidÚtime)ÚtzÚmtimer;   )r   Úst_moder   Úst_sizeÚst_uidÚst_gidÚdatetimeÚfromtimestampÚst_atimeÚtimezoneÚutcÚst_mtimeÚjoinÚrstripÚfilename)rK   Úparent_pathÚtr.   s   &&  r   rJ   ÚSFTPFileSystem._decode_statg   sí   € ä�4—<‘<× Ò Ø‰AÜ�T—\‘\×"Ò"Ø‰AàˆAà�BØ�D—L‘LØ�AØ�4—;‘;Ø�4—;‘;Ø”H×%Ñ%×3Ñ3Ø—‘¤(×"3Ñ"3×"7Ñ"7ð 4ó ð ”X×&Ñ&×4Ñ4Ø—‘¤(×"3Ñ"3×"7Ñ"7ð 5ó ð
ˆ÷ ØŸ(™( K×$6Ñ$6°sÓ$;¸T¿]¹]Ð#KÓLˆC�‰KØˆ
r   c                ó,  € V P                  V4      p\        P                  R V4       V P                  P	                  V4       Uu. uF  q0P                  W14      NK  	  ppV'       d   V# V Uu. uF  q3R,          NK  	  pp\        V4      # u upi u upi )zListing folder %srI   )r)   r   r   r#   Úlistdir_iterrJ   Úsorted)r   r'   ÚdetailrK   ÚstatsÚpathss   &&&   r   ÚlsÚSFTPFileSystem.ls€   s…   € Ø×#Ñ# DÓ)ˆÜ�‰Ð(¨$Ô/Ø;?¿8¹8×;PÑ;PÐQUÔ;VÓWÑ;V°4×"Ñ" 4Ö.Ñ;VˆÐWßØˆLá.3Ó4©e d˜&—\�\©eˆEÐ4Ü˜%“=Ð ùò Xùò 5s   ÁBÁ.Bc                óÔ   € V P                  V P                  \        P                  ! V4      4      R R7       \        P                  RW4       V P                  P                  W4       R# )T©r?   zPut file %s into %sN)ÚmkdirsÚ_parentÚosÚfspathr   r   r#   Úput)r   ÚlpathÚrpathÚcallbackÚkwargss   &&&&,r   Úput_fileÚSFTPFileSystem.put_fileŠ   sC   € Ø�‰�D—L‘L¤§¢¨5Ó!1Ó2¸TˆÔBÜ�‰Ð*¨EÔ9Ø�‰�‰�UÖ"r   c                ó¾   € V P                  V4      '       d   \        P                  ! VR R7       R# V P                  P	                  V P                  V4      V4       R# )Trr   N)Úisdirru   r5   r#   Úgetr)   )r   ry   rx   r{   s   &&&,r   Úget_fileÚSFTPFileSystem.get_file�   s<   € Ø�:‰:�e×ÒÜ�KŠK˜¨×-à�H‰H�L‰L˜×-Ñ-¨eÓ4°eÖ<r   c                ó  € \         P                  RV4       VP                  RR4      RJ dµ   RP                  V P                  \        \        P                  ! 4       4      .4      pV P                  P                  YRV'       d   TMRR7      pWVn        Wn
        Wn        \        P                  ! \        V4      Vn        \        P                  ! \         V4      Vn        V# V P                  P                  YV'       d   TMRR7      pV# )z�
block_size: int or None
    If 0, no buffering, if 1, line buffering, if >1, buffer that many
    bytes, if None use default from paramiko.
zOpening file %sÚ
autocommitTFr;   )Úbufsizeéÿÿÿÿ)r   r   r€   rc   r   ÚstrÚuuidÚuuid4r#   ÚopenÚ
targetpathÚfsÚtypesÚ
MethodTypeÚcommit_a_fileÚcommitÚdiscard_a_fileÚdiscard)r   r'   r8   Ú
block_sizer{   Úpath2Úfs   &&&&,  r   Ú_openÚSFTPFileSystem._open•   sÃ   € ô 	�‰Ð&¨Ô-Ø�:‰:�l DÓ)¨UÓ2à—H‘H˜dŸm™m¬S´·²³Ó->Ð?Ó@ˆEØ—‘—‘˜eÇ±:ÐQS�ÓTˆAØŒJØŒLØŒDÜ×'Ò'¬°qÓ9ˆAŒHÜ×(Ò(¬¸Ó;ˆAŒIð ˆð —‘—‘˜dÇ
±*ÐPR�ÓSˆAØˆr   c                ó¤   € V P                  V4      '       d   V P                  P                  V4       R # V P                  P                  V4       R # ©N)r   r#   rE   ÚremoverF   s   &&r   Ú_rmÚSFTPFileSystem._rm©   s1   € Ø�:‰:�d×ÒØ�H‰H�N‰N˜4Ö à�H‰H�O‰O˜DÖ!r   c                ó¬   € V P                  V4      pV P                  V4      p\        P                  R W4       V P                  P	                  W4       R# )zRenaming %s into %sN)r)   r   r   r#   Úposix_rename)r   ÚoldÚnews   &&&r   ÚmvÚSFTPFileSystem.mv¯   sC   € Ø×"Ñ" 3Ó'ˆØ×"Ñ" 3Ó'ˆÜ�‰Ð*¨CÔ5Ø�‰×Ñ˜cÖ'r   )r   r#   r   r   r   )ÚsftpÚssh)Téÿ  )Fr¥   r™   )F)ÚrbN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   r   r   Úclassmethodr)   Ústaticmethodr/   r6   r5   rE   rL   rJ   ro   r|   r�   r–   r›   r¡   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r	   r	      sŽ   ù‡ € ñð €Hõò,+ð ñ3ó ð3ð ñó ðô	'ô3òò
ð óó ðô0!ô#ò
=ôò("÷(ò (r   r	   c                 óf   € V P                   P                  V P                  V P                  4       R # r™   )rŒ   r¡   r   r‹   r$   s   &r   r�   r�   ¶   s   € Ø‡G�G‡J�Jˆt�}‰}˜dŸo™oÖ.r   c                 óP   € V P                   P                  V P                  4       R # r™   )rŒ   r›   r   r$   s   &r   r‘   r‘   º   s   € Ø‡G�G‡K�K�—‘Ör   )r]   Úloggingru   r�   rˆ   rK   r   r   r   r=   r   Úutilsr   Ú	getLoggerr   r	   r�   r‘   r   r   r   Ú<module>r·      sJ   ðÛ Û Û 	Û Û ß !ã å !Ý )à	×	Ò	˜=Ó	)€ôc(Ð'ô c(òL/ôr   