summaryrefslogtreecommitdiff
path: root/coverage/templite.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-01-09 20:10:23 -0500
committerNed Batchelder <ned@nedbatchelder.com>2015-01-09 20:10:23 -0500
commit0d1bc9fa8a3723c1929138f3b6feb1cfdb478e07 (patch)
tree3432209feff8054af73ef3a55ccaf7769d67fd20 /coverage/templite.py
parenteca68a4d21e6cc695417b2de21ec88ca0fa0921a (diff)
downloadpython-coveragepy-git-0d1bc9fa8a3723c1929138f3b6feb1cfdb478e07.tar.gz
Report a more useful error if an expression fails.
Diffstat (limited to 'coverage/templite.py')
-rw-r--r--coverage/templite.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/coverage/templite.py b/coverage/templite.py
index c2e8981f..c42e380c 100644
--- a/coverage/templite.py
+++ b/coverage/templite.py
@@ -11,6 +11,11 @@ class TempliteSyntaxError(ValueError):
pass
+class TempliteValueError(ValueError):
+ """Raised when an expression won't evaluate in a template."""
+ pass
+
+
class CodeBuilder(object):
"""Build source code conveniently."""
@@ -250,7 +255,12 @@ class Templite(object):
try:
value = getattr(value, dot)
except AttributeError:
- value = value[dot]
+ try:
+ value = value[dot]
+ except (TypeError, KeyError):
+ raise TempliteValueError(
+ "Couldn't evaluate %r.%s" % (value, dot)
+ )
if callable(value):
value = value()
return value