diff options
Diffstat (limited to 'lib/spack/external/jinja2/utils.py')
-rw-r--r-- | lib/spack/external/jinja2/utils.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/lib/spack/external/jinja2/utils.py b/lib/spack/external/jinja2/utils.py index b96d309546..502a311c08 100644 --- a/lib/spack/external/jinja2/utils.py +++ b/lib/spack/external/jinja2/utils.py @@ -567,7 +567,7 @@ def htmlsafe_json_dumps(obj, dumper=None, **kwargs): .replace(u'>', u'\\u003e') \ .replace(u'&', u'\\u0026') \ .replace(u"'", u'\\u0027') - return rv + return Markup(rv) @implements_iterator @@ -612,6 +612,29 @@ class Joiner(object): return self.sep +class Namespace(object): + """A namespace object that can hold arbitrary attributes. It may be + initialized from a dictionary or with keyword argments.""" + + def __init__(*args, **kwargs): + self, args = args[0], args[1:] + self.__attrs = dict(*args, **kwargs) + + def __getattribute__(self, name): + if name == '_Namespace__attrs': + return object.__getattribute__(self, name) + try: + return self.__attrs[name] + except KeyError: + raise AttributeError(name) + + def __setitem__(self, name, value): + self.__attrs[name] = value + + def __repr__(self): + return '<Namespace %r>' % self.__attrs + + # does this python version support async for in and async generators? try: exec('async def _():\n async for _ in ():\n yield _') |