def METHOD_NAME(self, path, mode="rb", block_size=None, **kwargs):
    """
    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.
    """
    logger.debug("Opening file %s" % path)
    if kwargs.get("autocommit", True) is False:
        # writes to temporary file, move on commit
        path2 = "/".join([self.temppath, str(uuid.uuid4())])
        f = self.ftp.open(path2, mode, bufsize=block_size if block_size else -1)
        f.temppath = path2
        f.targetpath = path
        f.fs = self
        f.commit = types.MethodType(commit_a_file, f)
        f.discard = types.MethodType(discard_a_file, f)
    else:
        f = self.ftp.open(path, mode, bufsize=block_size if block_size else -1)
    return f