diff --git a/irods/message/__init__.py b/irods/message/__init__.py index cab29ba5..ccca2f0c 100644 --- a/irods/message/__init__.py +++ b/irods/message/__init__.py @@ -12,8 +12,6 @@ from typing import Optional from warnings import warn -import defusedxml.ElementTree as ET_secure_xml - import irods.exception as ex from . import quasixml as ET_quasi_xml @@ -105,24 +103,18 @@ class BadXMLSpec(RuntimeError): def current_XML_parser(get_module=False): d = getattr(_thrlocal, "xml_type", _default_XML) - return d if not get_module else _XML_parsers[d] + return d if not get_module else _XML_parser_for(d) def default_XML_parser(get_module=False): d = _default_XML - return d if not get_module else _XML_parsers[d] + return d if not get_module else _XML_parser_for(d) def string_for_XML_parser(parser_enum): return PARSER_TYPE_STRINGS[parser_enum] -_XML_parsers = { - XML_Parser_Type.STANDARD_XML: ET_xml, - XML_Parser_Type.QUASI_XML: ET_quasi_xml, - XML_Parser_Type.SECURE_XML: ET_secure_xml, -} - _reversed_XML_strings_lookup = {v: k for k, v in _XML_strings.items()} @@ -178,9 +170,9 @@ def ET(xml_type=(), server_version=None): _thrlocal.irods_server_version = tuple( server_version ) # A default server version for Quasi-XML parsing is set (from the environment) and - return _XML_parsers[ + return _XML_parser_for( current_XML_parser() - ] # applies to all threads in which ET() has not been called to update the value. + ) # applies to all threads in which ET() has not been called to update the value. logger = logging.getLogger(__name__) @@ -1286,3 +1278,13 @@ def empty_gen_query_out(cols): ] gqo = GenQueryResponse(rowCnt=0, attriCnt=len(cols), SqlResult_PI=sql_results) return gqo + + +def _XML_parser_for(d: XML_Parser_Type): + import defusedxml.ElementTree as ET_secure_xml + return { + XML_Parser_Type.STANDARD_XML: ET_xml, + XML_Parser_Type.QUASI_XML: ET_quasi_xml, + XML_Parser_Type.SECURE_XML: ET_secure_xml, + }[d] + diff --git a/irods/results.py b/irods/results.py index 2cd236ff..b669c58b 100644 --- a/irods/results.py +++ b/irods/results.py @@ -1,4 +1,3 @@ -from prettytable import PrettyTable from irods.models import ModelBase @@ -15,6 +14,7 @@ def __init__(self, raw): self.continue_index = 0 def __str__(self): + from prettytable import PrettyTable table = PrettyTable() for col in self.cols: table.add_column(ModelBase.columns()[col.attriInx].icat_key, col.value) @@ -22,6 +22,7 @@ def __str__(self): return table.get_string() def get_html_string(self, *args, **kwargs): + from prettytable import PrettyTable table = PrettyTable() for col in self.cols: table.add_column(ModelBase.columns()[col.attriInx].icat_key, col.value)