Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.util.tool_shed.xml_util
import logging
import os
import tempfile
from typing import (
Optional,
Tuple,
)
from galaxy.util import (
Element,
ElementTree,
parse_xml as galaxy_parse_xml,
xml_to_string,
)
from galaxy.util.path import StrPath
log = logging.getLogger(__name__)
[docs]def create_and_write_tmp_file(elem: Element) -> str:
tmp_str = xml_to_string(elem, pretty=True)
with tempfile.NamedTemporaryFile(prefix="tmp-toolshed-cawrf", delete=False) as fh:
tmp_filename = fh.name
with open(tmp_filename, mode="w", encoding="utf-8") as fh:
fh.write(tmp_str)
return tmp_filename
[docs]def parse_xml(file_name: StrPath, check_exists=True) -> Tuple[Optional[ElementTree], str]:
"""Returns a parsed xml tree with comments intact."""
error_message = ""
if check_exists and not os.path.exists(file_name):
return None, f"File does not exist {str(file_name)}"
try:
tree = galaxy_parse_xml(file_name, remove_comments=False, strip_whitespace=False)
except OSError:
raise
except Exception as e:
error_message = f"Exception attempting to parse {file_name}: {e}"
log.exception(error_message)
return None, error_message
return tree, error_message
__all__ = (
"create_and_write_tmp_file",
"parse_xml",
)