def open(self, mode = 'rb', agent = None): """Open the dentry for reading. Will raise an error if this dentry is not a regular file. :param str mode: open mode, must be either 'r' or 'rb' :param PoolAgent agent: a pool agent to use for reading :rtype: IOBase """ if agent is None: agent = self.agent io = DentryIO(readahead = agent.readahead(self.hashes)) if mode == 'rb': return io elif mode == 'r': wrapper = TextIOWrapper(io) wrapper._CHUNK_SIZE = self.chunk_size return wrapper else: return RuntimeError("Unsupported open mode %r" % (mode,))