Warning

This document is for an old release 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 (
    etree,
    parse_xml as galaxy_parse_xml,
    unicodify,
    xml_to_string,
)
from galaxy.util.path import StrPath

log = logging.getLogger(__name__)


[docs]def create_and_write_tmp_file(elem: etree.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[etree.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 {str(file_name)}: {unicodify(e)}" log.exception(error_message) return None, error_message return tree, error_message
__all__ = ( "create_and_write_tmp_file", "parse_xml", )