Incompatibility cubicweb 3.37 and logilab-mtconverter 0.10.0
We have the following error after the upgrade of logilab-mtconverter: https://forge.extranet.logilab.fr/cubicweb/cubes/eac/-/jobs/632866
Packages:
- cubicweb 3.37.2
- logilab-mtconverter 0.10.0
It seems that cubicweb _cw_mtc_transform
calls logilab-mtconverter xml_escape
with a byte instead of a string.
cubicweb_eac/views.py:239: in render_body
w(self.entity._cw_mtc_transform(data.getvalue(), sourcemt, targetmt, "utf-8"))
.tox/py3/lib/python3.9/site-packages/cubicweb/entity.py:755: in _cw_mtc_transform
data = _engine.convert(trdata, target_format).decode()
.tox/py3/lib/python3.9/site-packages/logilab/mtconverter/engine.py:79: in convert
return transform.convert(trdata)
.tox/py3/lib/python3.9/site-packages/logilab/mtconverter/transform.py:79: in convert
trdata = transform.convert(trdata)
.tox/py3/lib/python3.9/site-packages/logilab/mtconverter/transform.py:53: in convert
trdata.data = self._convert(trdata)
.tox/py3/lib/python3.9/site-packages/logilab/mtconverter/transforms/__init__.py:94: in _convert
res.append(xml_escape(line) + "<br/>")
------------
data = b'<plip>plop</plip>'
def xml_escape(data: str) -> str:
"""escapes XML forbidden characters in attributes and PCDATA"""
if isinstance(data, str):
data = data.translate(ESC_UCAR_TABLE)
else:
data = data.translate(ESC_CAR_TABLE)
return (
> data.replace("&", "&")
.replace("<", "<")
.replace(">", ">")
.replace('"', """)
.replace("'", "'")
)
E TypeError: a bytes-like object is required, not 'str'