diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-01-09 20:10:23 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-01-09 20:10:23 -0500 |
commit | 0d1bc9fa8a3723c1929138f3b6feb1cfdb478e07 (patch) | |
tree | 3432209feff8054af73ef3a55ccaf7769d67fd20 /coverage/templite.py | |
parent | eca68a4d21e6cc695417b2de21ec88ca0fa0921a (diff) | |
download | python-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.py | 12 |
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 |