Mercurial > repos > fubar > tool_factory_2
view toolfactory/galaxyxml/__init__.py @ 92:6ce360759c28 draft
Uploaded
author | fubar |
---|---|
date | Thu, 19 Nov 2020 23:59:50 +0000 |
parents | |
children |
line wrap: on
line source
from builtins import object from builtins import str from lxml import etree class GalaxyXML(object): def __init__(self): self.root = etree.Element("root") def export(self): return etree.tostring(self.root, pretty_print=True, encoding="unicode") class Util(object): @classmethod def coerce(cls, data, kill_lists=False): """Recursive data sanitisation """ if isinstance(data, dict): return {k: cls.coerce(v, kill_lists=kill_lists) for k, v in list(data.items()) if v is not None} elif isinstance(data, list): if kill_lists: return cls.coerce(data[0]) else: return [cls.coerce(v, kill_lists=kill_lists) for v in data] else: return cls.coerce_value(data) @classmethod def coerce_value(cls, obj): """Make everything a string! """ if isinstance(obj, bool): if obj: return "true" else: return "false" elif isinstance(obj, str): return obj else: return str(obj) @classmethod def clean_kwargs(cls, params, final=False): if "kwargs" in params: kwargs = params["kwargs"] for k in kwargs: params[k] = kwargs[k] del params["kwargs"] if "self" in params: del params["self"] if "__class__" in params: del params["__class__"] # There will be more params, it would be NICE to use a whitelist # instead of a blacklist, but until we have more data let's just # blacklist stuff we see commonly. if final: for blacklist in ("positional",): if blacklist in params: del params[blacklist] return params