1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
import contextlib
import re
from ..test.helpers import home_collection, make_session as make_test_session
from irods.message import ET, XML_Parser_Type
__all__ = ["make_session", "home_collection", "xml_mode"]
def make_session(test_server_version=False, **kwargs):
return make_test_session(test_server_version=test_server_version, **kwargs)
make_session.__doc__ = re.sub(
r"(test_server_version\s*)=\s*\w+", r"\1 = False", make_test_session.__doc__
)
@contextlib.contextmanager
def xml_mode(s):
"""In a with-block, this context manager can temporarily change the client's choice of XML parser.
Example usages:
with("QUASI_XML"):
# ...
with(XML_Parser_Type.QUASI_XML):
# ..."""
try:
if isinstance(s, str):
ET(getattr(XML_Parser_Type, s)) # e.g. xml_mode("QUASI_XML")
elif isinstance(s, XML_Parser_Type):
ET(s) # e.g. xml_mode(XML_Parser_Type.QUASI_XML)
else:
msg = "xml_mode argument must be a string (e.g. 'QUASI_XML') or an XML_Parser_Type enum."
raise ValueError(msg)
yield
finally:
ET(None)
|