tessl install tessl/pypi-pyfuse3@3.4.0Python 3 bindings for libfuse 3 with async I/O support
Common mistakes and what to do instead.
async def lookup(self, parent_inode, name, ctx):
if name not in self.entries:
raise KeyError("Not found") # Crashes filesystem!async def lookup(self, parent_inode, name, ctx):
if name not in self.entries:
raise pyfuse3.FUSEError(errno.ENOENT)async def unlink(self, parent_inode, name, ctx):
inode = self._find_entry(parent_inode, name)
del self.inodes[inode] # Kernel may still reference it!async def unlink(self, parent_inode, name, ctx):
inode = self._find_entry(parent_inode, name)
self.inodes[inode]['nlink'] -= 1
# Deleted in forget() when safeasync def read(self, fh, offset, size):
time.sleep(1) # Blocks worker task!
return self.data[offset:offset + size]async def read(self, fh, offset, size):
await trio.sleep(1) # Yields to other tasks
return self.data[offset:offset + size]