diff --git a/nibabel/gifti/gifti.py b/nibabel/gifti/gifti.py index 56efa4ea0..16261ee67 100644 --- a/nibabel/gifti/gifti.py +++ b/nibabel/gifti/gifti.py @@ -852,7 +852,7 @@ def _to_xml_element(self): GIFTI.append(dar._to_xml_element()) return GIFTI - def to_xml(self, enc='utf-8', *, mode='strict') -> bytes: + def to_xml(self, enc='utf-8', *, mode='strict', **kwargs) -> bytes: """Return XML corresponding to image content""" if mode == 'strict': if any(arr.datatype not in GIFTI_DTYPES for arr in self.darrays): @@ -882,7 +882,7 @@ def to_xml(self, enc='utf-8', *, mode='strict') -> bytes: header = b""" """ - return header + super().to_xml(enc) + return header + super().to_xml(enc, **kwargs) # Avoid the indirection of going through to_file_map def to_bytes(self, enc='utf-8', *, mode='strict'): diff --git a/nibabel/xmlutils.py b/nibabel/xmlutils.py index 31637b5e0..4a5fb2897 100644 --- a/nibabel/xmlutils.py +++ b/nibabel/xmlutils.py @@ -15,17 +15,24 @@ class XmlSerializable: - """Basic interface for serializing an object to xml""" + """Basic interface for serializing an object to XML""" - def _to_xml_element(self): + def _to_xml_element(self) -> Element: """Output should be a xml.etree.ElementTree.Element""" - raise NotImplementedError() + raise NotImplementedError # pragma: no cover - def to_xml(self, enc='utf-8'): - """Output should be an xml string with the given encoding. - (default: utf-8)""" + def to_xml(self, enc='utf-8', **kwargs) -> bytes: + r"""Generate an XML bytestring with a given encoding. + + Parameters + ---------- + enc : :class:`string` + Encoding to use for the generated bytestring. Default: 'utf-8' + \*\*kwargs : :class:`dict` + Additional keyword arguments to :func:`xml.etree.ElementTree.tostring`. + """ ele = self._to_xml_element() - return '' if ele is None else tostring(ele, enc) + return b'' if ele is None else tostring(ele, enc, **kwargs) class XmlBasedHeader(FileBasedHeader, XmlSerializable): @@ -101,10 +108,10 @@ def parse(self, string=None, fname=None, fptr=None): parser.ParseFile(fptr) def StartElementHandler(self, name, attrs): - raise NotImplementedError + raise NotImplementedError # pragma: no cover def EndElementHandler(self, name): - raise NotImplementedError + raise NotImplementedError # pragma: no cover def CharacterDataHandler(self, data): - raise NotImplementedError + raise NotImplementedError # pragma: no cover