#
# SPDX-License-Identifier: AGPL-3.0
+from __future__ import absolute_import
+from builtins import bytes
import json
import llfuse
import logging
import re
import time
-from fresh import FreshBase, convertTime
+from .fresh import FreshBase, convertTime
_logger = logging.getLogger('arvados.arvados_fuse')
class FuseArvadosFile(File):
"""Wraps a ArvadosFile."""
- __slots__ = ('arvfile',)
+ __slots__ = ('arvfile', '_enable_write')
- def __init__(self, parent_inode, arvfile, _mtime):
+ def __init__(self, parent_inode, arvfile, _mtime, enable_write):
super(FuseArvadosFile, self).__init__(parent_inode, _mtime)
self.arvfile = arvfile
+ self._enable_write = enable_write
def size(self):
with llfuse.lock_released:
return False
def writable(self):
- return self.arvfile.writable()
+ return self._enable_write and self.arvfile.writable()
def flush(self):
with llfuse.lock_released:
return len(self.contents)
def readfrom(self, off, size, num_retries=0):
- return self.contents[off:(off+size)]
+ return bytes(self.contents[off:(off+size)], encoding='utf-8')
class ObjectFile(StringFile):