diff options
| author | Chris McDonough <chrism@agendaless.com> | 2010-01-06 02:46:54 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2010-01-06 02:46:54 +0000 |
| commit | 3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f (patch) | |
| tree | 2c6a500eaa4408cb26b4d2dffd7a2eb685adc2d8 /repoze | |
| parent | 9544d0f3406ae7994251577a8c087efc0ec907cc (diff) | |
| download | pyramid-3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f.tar.gz pyramid-3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f.tar.bz2 pyramid-3ebf0287eeb8c269a7a3b35ee1441d1b07118d7f.zip | |
- Show the derived abspath of template resource specifications in the
traceback when a renderer template cannot be found.
- Show the original traceback when a Chameleon template cannot be
rendered due to a platform incompatibility.
Diffstat (limited to 'repoze')
| -rw-r--r-- | repoze/bfg/chameleon_text.py | 7 | ||||
| -rw-r--r-- | repoze/bfg/chameleon_zpt.py | 7 | ||||
| -rw-r--r-- | repoze/bfg/renderers.py | 12 |
3 files changed, 15 insertions, 11 deletions
diff --git a/repoze/bfg/chameleon_text.py b/repoze/bfg/chameleon_text.py index 85f0126b3..f1dc8e3aa 100644 --- a/repoze/bfg/chameleon_text.py +++ b/repoze/bfg/chameleon_text.py @@ -1,14 +1,17 @@ +import sys + from webob import Response from zope.interface import implements try: from chameleon.core.template import TemplateFile -except ImportError, why: # pragma: no cover +except ImportError: # pragma: no cover + exc_class, exc, tb = sys.exc_info() # Chameleon doesn't work on non-CPython platforms class TemplateFile(object): def __init__(self, *arg, **kw): - raise ImportError(why[0]) + raise ImportError, exc, tb try: from chameleon.zpt.language import Parser diff --git a/repoze/bfg/chameleon_zpt.py b/repoze/bfg/chameleon_zpt.py index 22d409f33..f597ebd5f 100644 --- a/repoze/bfg/chameleon_zpt.py +++ b/repoze/bfg/chameleon_zpt.py @@ -1,14 +1,17 @@ +import sys + from webob import Response from zope.interface import implements try: from chameleon.zpt.template import PageTemplateFile -except ImportError, why: # pragma: no cover +except ImportError: # pragma: no cover + exc_class, exc, tb = sys.exc_info() # Chameleon doesn't work on non-CPython platforms class PageTemplateFile(object): def __init__(self, *arg, **kw): - raise ImportError(why[0]) + raise ImportError, exc, tb from repoze.bfg.interfaces import IResponseFactory from repoze.bfg.interfaces import ITemplateRenderer diff --git a/repoze/bfg/renderers.py b/repoze/bfg/renderers.py index e937bd2a1..b54803b3b 100644 --- a/repoze/bfg/renderers.py +++ b/repoze/bfg/renderers.py @@ -46,19 +46,17 @@ def template_renderer_factory(spec, impl): # spec is a package:relpath resource spec renderer = reg.queryUtility(ITemplateRenderer, name=spec) if renderer is None: - # service unit tests by trying the relative path string as - # the utility name directly - renderer = reg.queryUtility(ITemplateRenderer, name=spec) - if renderer is None: try: package_name, filename = spec.split(':', 1) except ValueError: # pragma: no cover - # unit test or someone passing a relative pathname + # unit test or somehow we were passed a relative pathname; + # this should die package_name = caller_package(4).__name__ filename = spec - if not pkg_resources.resource_exists(package_name, filename): - raise ValueError('Missing template resource: %s' % spec) abspath = pkg_resources.resource_filename(package_name, filename) + if not pkg_resources.resource_exists(package_name, filename): + raise ValueError( + 'Missing template resource: %s (%s)' % (spec, abspath)) renderer = impl(abspath) if not _reload_resources(): # cache the template |
