From b791a1f734b6de5f63622483e2333468a8ebc810 Mon Sep 17 00:00:00 2001 From: mxmlnkn Date: Wed, 2 Oct 2024 18:05:15 +0200 Subject: [PATCH 1/2] Implement io.IOBase.seekable method --- sshfs/file.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sshfs/file.py b/sshfs/file.py index 349f64d..5187d5b 100644 --- a/sshfs/file.py +++ b/sshfs/file.py @@ -81,6 +81,9 @@ async def _open_file(self): def readable(self): return "r" in self.mode + def seekable(self): + return "r" in self.mode or "w" in self.mode + def writable(self): return not self.readable() From df5fe6f2ae59f087c9ab976d68a6fc8032dce3d9 Mon Sep 17 00:00:00 2001 From: mxmlnkn Date: Thu, 3 Oct 2024 10:28:23 +0200 Subject: [PATCH 2/2] Add support for + modes to SSHFile --- sshfs/file.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sshfs/file.py b/sshfs/file.py index 5187d5b..68f7ee9 100644 --- a/sshfs/file.py +++ b/sshfs/file.py @@ -18,8 +18,7 @@ def __init__( self.fs = fs self.loop = fs.loop - # TODO: support r+ / w+ / a+ - if mode not in {"rb", "wb", "ab"}: + if "t" in mode or "b" not in mode: raise ValueError(f"Unsupported file mode: {mode}") self.path = path @@ -79,13 +78,13 @@ async def _open_file(self): _close = _mirror_method("close") def readable(self): - return "r" in self.mode + return "r" in self.mode or "+" in self.mode def seekable(self): return "r" in self.mode or "w" in self.mode def writable(self): - return not self.readable() + return any(x in self.mode for x in ["a", "w", "+"]) def close(self): if self._closed: