|
12 | 12 | from typing import Optional |
13 | 13 | from warnings import warn |
14 | 14 |
|
15 | | -import defusedxml.ElementTree as ET_secure_xml |
16 | | - |
17 | 15 | import irods.exception as ex |
18 | 16 |
|
19 | 17 | from . import quasixml as ET_quasi_xml |
@@ -105,24 +103,18 @@ class BadXMLSpec(RuntimeError): |
105 | 103 |
|
106 | 104 | def current_XML_parser(get_module=False): |
107 | 105 | d = getattr(_thrlocal, "xml_type", _default_XML) |
108 | | - return d if not get_module else _XML_parsers[d] |
| 106 | + return d if not get_module else _XML_parser_for(d) |
109 | 107 |
|
110 | 108 |
|
111 | 109 | def default_XML_parser(get_module=False): |
112 | 110 | d = _default_XML |
113 | | - return d if not get_module else _XML_parsers[d] |
| 111 | + return d if not get_module else _XML_parser_for(d) |
114 | 112 |
|
115 | 113 |
|
116 | 114 | def string_for_XML_parser(parser_enum): |
117 | 115 | return PARSER_TYPE_STRINGS[parser_enum] |
118 | 116 |
|
119 | 117 |
|
120 | | -_XML_parsers = { |
121 | | - XML_Parser_Type.STANDARD_XML: ET_xml, |
122 | | - XML_Parser_Type.QUASI_XML: ET_quasi_xml, |
123 | | - XML_Parser_Type.SECURE_XML: ET_secure_xml, |
124 | | -} |
125 | | - |
126 | 118 | _reversed_XML_strings_lookup = {v: k for k, v in _XML_strings.items()} |
127 | 119 |
|
128 | 120 |
|
@@ -178,9 +170,9 @@ def ET(xml_type=(), server_version=None): |
178 | 170 | _thrlocal.irods_server_version = tuple( |
179 | 171 | server_version |
180 | 172 | ) # A default server version for Quasi-XML parsing is set (from the environment) and |
181 | | - return _XML_parsers[ |
| 173 | + return _XML_parser_for( |
182 | 174 | current_XML_parser() |
183 | | - ] # applies to all threads in which ET() has not been called to update the value. |
| 175 | + ) # applies to all threads in which ET() has not been called to update the value. |
184 | 176 |
|
185 | 177 |
|
186 | 178 | logger = logging.getLogger(__name__) |
@@ -1286,3 +1278,13 @@ def empty_gen_query_out(cols): |
1286 | 1278 | ] |
1287 | 1279 | gqo = GenQueryResponse(rowCnt=0, attriCnt=len(cols), SqlResult_PI=sql_results) |
1288 | 1280 | return gqo |
| 1281 | + |
| 1282 | + |
| 1283 | +def _XML_parser_for(d: XML_Parser_Type): |
| 1284 | + import defusedxml.ElementTree as ET_secure_xml |
| 1285 | + return { |
| 1286 | + XML_Parser_Type.STANDARD_XML: ET_xml, |
| 1287 | + XML_Parser_Type.QUASI_XML: ET_quasi_xml, |
| 1288 | + XML_Parser_Type.SECURE_XML: ET_secure_xml, |
| 1289 | + }[d] |
| 1290 | + |
0 commit comments