diff --git a/vcsserver/base.py b/vcsserver/base.py --- a/vcsserver/base.py +++ b/vcsserver/base.py @@ -187,7 +187,7 @@ class BytesEnvelope(bytes): if isinstance(content, bytes): return super().__new__(cls, content) else: - raise TypeError('Content must be bytes.') + raise TypeError('BytesEnvelope content= param must be bytes. Use BinaryEnvelope to wrap other types') class BinaryBytesEnvelope(BytesEnvelope): diff --git a/vcsserver/remote/git.py b/vcsserver/remote/git.py --- a/vcsserver/remote/git.py +++ b/vcsserver/remote/git.py @@ -1307,7 +1307,7 @@ class GitRemote(RemoteBase): result_libgit.append((line_no, blame_commit_id, line)) - return result_libgit + return BinaryEnvelope(result_libgit) @reraise_safe_exceptions def update_server_info(self, wire): diff --git a/vcsserver/remote/hg.py b/vcsserver/remote/hg.py --- a/vcsserver/remote/hg.py +++ b/vcsserver/remote/hg.py @@ -598,8 +598,8 @@ class HgRemote(RemoteBase): ln_no = i sha = hex(annotate_obj.fctx.node()) content = annotate_obj.text - result.append((ln_no, sha, content)) - return result + result.append((ln_no, ascii_str(sha), content)) + return BinaryEnvelope(result) @reraise_safe_exceptions def fctx_node_data(self, wire, revision, path): diff --git a/vcsserver/remote/svn.py b/vcsserver/remote/svn.py --- a/vcsserver/remote/svn.py +++ b/vcsserver/remote/svn.py @@ -344,10 +344,10 @@ class SvnRemote(RemoteBase): except svn.core.SubversionException as exc: log.exception("Error during blame operation.") raise Exception( - "Blame not supported or file does not exist at path %s. " - "Error %s." % (path, exc)) + f"Blame not supported or file does not exist at path {path}. " + f"Error {exc}.") - return annotations + return BinaryEnvelope(annotations) @reraise_safe_exceptions def get_node_type(self, wire, revision=None, path=''):