summaryrefslogtreecommitdiff
path: root/lib/spack/external/jinja2/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spack/external/jinja2/utils.py')
-rw-r--r--lib/spack/external/jinja2/utils.py25
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 _')