From f6692e9842f7a4d5c2b414e61159eb454d0e20b2 Mon Sep 17 00:00:00 2001 From: Michal Srb Date: Tue, 6 Jan 2015 14:35:28 +0100 Subject: [PATCH 1/3] Do not try to produce "pretty" XML with Python < 2.7 --- java-utils/maven_depmap.py | 4 ++-- java-utils/mvn_artifact.py | 5 ++--- python/javapackages/common/util.py | 11 +++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py index 8f6b11f..9a25211 100644 --- a/java-utils/maven_depmap.py +++ b/java-utils/maven_depmap.py @@ -51,6 +51,7 @@ from javapackages.metadata.artifact import MetadataArtifact from javapackages.metadata.alias import MetadataAlias import javapackages.metadata.pyxbmetadata as m +import javapackages.common.util as util import pyxb @@ -199,8 +200,7 @@ def write_metadata(metadata_file, artifacts): root.artifacts = pyxb.BIND(*artifacts) with open(metadata_file, 'w') as f: - dom = root.toDOM(None) - f.write(dom.toprettyxml(indent=" ")) + util.write_metadata(f, root) if __name__ == "__main__": diff --git a/java-utils/mvn_artifact.py b/java-utils/mvn_artifact.py index 424252b..0bd97e0 100644 --- a/java-utils/mvn_artifact.py +++ b/java-utils/mvn_artifact.py @@ -42,7 +42,7 @@ from javapackages.maven.pom import POM, PomLoadingException from javapackages.ivy.ivyfile import IvyFile from javapackages.xmvn.xmvn_resolve import XMvnResolve, ResolutionResult, ResolutionRequest -from javapackages.common.util import args_to_unicode +from javapackages.common.util import args_to_unicode, write_metadata import sys import os @@ -316,5 +316,4 @@ if __name__ == "__main__": add_artifact_elements(metadata, art, pom_path, jar_path) with open(config, 'w') as f: - dom = metadata.toDOM(None) - f.write(dom.toprettyxml(indent=" ")) + write_metadata(f, metadata) diff --git a/python/javapackages/common/util.py b/python/javapackages/common/util.py index f893cc4..37942a4 100644 --- a/python/javapackages/common/util.py +++ b/python/javapackages/common/util.py @@ -128,3 +128,14 @@ def get_logger(name): handler.setFormatter(formatter) logger.addHandler(handler) return logger + + +def write_metadata(fileobj, metadata): + dom = metadata.toDOM(None) + + # minidom in Python < 2.6 adds unnecessary whitespace + # see: http://bugs.python.org/issue4147 + if sys.version_info < (2, 7): + fileobj.write(dom.toxml()) + else: + fileobj.write(dom.toprettyxml(indent=" ")) -- 2.1.0