From c2cbfceacedee283367cfec49d77fe587f326779 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Tue, 10 Apr 2012 20:28:55 +0100 Subject: [PATCH] Always generate XML using the UTF-8 encoding Reported by David Abrahams (bug #3516559). --- archive.py | 2 +- create.py | 2 +- digest.py | 2 +- merge.py | 2 +- mimetypes.py | 2 +- release.py | 6 +++--- stable.py | 2 +- validator.py | 8 ++++---- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/archive.py b/archive.py index fbdfbf7..ae6c104 100644 --- a/archive.py +++ b/archive.py @@ -117,4 +117,4 @@ def add_archive(data, url, local_file, extract, algs): name, value = x.split('=') digest_element.setAttribute(name, value) - return doc.toxml() + return doc.toxml('utf-8') diff --git a/create.py b/create.py index a85fa89..32c35af 100644 --- a/create.py +++ b/create.py @@ -97,4 +97,4 @@ def create_from_local(local): root.appendChild(doc.createTextNode('\n')) # minidom's writer loses the newline after the PI - return xml_header + root.toxml() + return xml_header + root.toxml('utf-8') diff --git a/digest.py b/digest.py index f597170..c0054a3 100644 --- a/digest.py +++ b/digest.py @@ -76,6 +76,6 @@ def add_digests(data, alg = None): changed = True if changed: - return doc.toxml() + return doc.toxml('utf-8') else: return data diff --git a/merge.py b/merge.py index 7b3e3d7..273c22d 100644 --- a/merge.py +++ b/merge.py @@ -171,4 +171,4 @@ def merge(data, local): xmltools.insert_element(new_impl, group) - return master_doc.toxml() + return master_doc.toxml('utf-8') diff --git a/mimetypes.py b/mimetypes.py index fac8751..48ad47e 100644 --- a/mimetypes.py +++ b/mimetypes.py @@ -25,6 +25,6 @@ def add_types(data): changed = True if changed: - return doc.toxml() + return doc.toxml('utf-8') else: return data diff --git a/release.py b/release.py index 3d285b4..4111f04 100644 --- a/release.py +++ b/release.py @@ -8,7 +8,7 @@ def set_interface_uri(data, uri): """Set the uri attribute on the root element.""" doc = minidom.parseString(data) doc.documentElement.setAttribute('uri', uri) - return doc.toxml() + return doc.toxml('utf-8') def add_version(data, version): """Create a new after the last one in the file.""" @@ -30,7 +30,7 @@ def add_version(data, version): if previous and previous.nodeType == Node.TEXT_NODE: parent.insertBefore(doc.createTextNode(previous.nodeValue), next) parent.insertBefore(new_impl, next) - return doc.toxml() + return doc.toxml('utf-8') def set_attributes(data, selected_version, id = None, version = None, released = None, stability = None, main = None, arch = None): """Normally there's only one implementation, but we can cope with several.""" @@ -90,4 +90,4 @@ def set_attributes(data, selected_version, id = None, version = None, released = if x.hasAttribute('version-modifier'): x.removeAttribute('version-modifier') - return doc.toxml() + return doc.toxml('utf-8') diff --git a/stable.py b/stable.py index e64f5b2..26da268 100644 --- a/stable.py +++ b/stable.py @@ -23,7 +23,7 @@ def mark_stable(data): for impl in latest_testing: impl.setAttribute('stability', 'stable') - return doc.toxml() + return doc.toxml('utf-8') def get_stability(x): root = x.ownerDocument.documentElement diff --git a/validator.py b/validator.py index dd64631..aefae50 100644 --- a/validator.py +++ b/validator.py @@ -1,4 +1,4 @@ -import os +import os, io from zeroinstall.injector import model, namespaces from zeroinstall.injector.reader import InvalidInterface, update from xml.dom import minidom, Node, XMLNS_NAMESPACE @@ -66,13 +66,13 @@ def checkElement(elem): checkElement(child) def check(data, warnings = True): + assert type(data) == bytes, type(data) # (must not be unicode) fd, tmp_name = tempfile.mkstemp(prefix = '0publish-validate-') os.close(fd) tmp_iface = model.Interface(tmp_name) try: - tmp_file = file(tmp_name, 'w') - tmp_file.write(data) - tmp_file.close() + with io.open(tmp_name, 'wb') as stream: + stream.write(data) try: update(tmp_iface, tmp_name, local = True) except InvalidInterface, ex: -- 2.11.4.GIT