def resolve_spec(self, path_or_spec): if path_or_spec is None: return path_or_spec package, filename = resolve_resource_spec(path_or_spec, self.package) if package is None: return filename # absolute filename return '%s:%s' % (package, filename)
def __init__(self, root_dir, cache_max_age=3600, package_name=None): # package_name is for bw compat; it is preferred to pass in a # package-relative path as root_dir # (e.g. ``anotherpackage:foo/static``). caller_package_name = caller_package().__name__ package_name = package_name or caller_package_name package_name, root_dir = resolve_resource_spec(root_dir, package_name) if package_name is None: app = StaticURLParser(root_dir, cache_max_age=cache_max_age) else: app = PackageURLParser(package_name, root_dir, cache_max_age=cache_max_age) self.app = app
def renderer_factory(path): from mako.lookup import TemplateLookup registry = get_current_registry() lookup = registry.queryUtility(IMakoLookup) if lookup is None: settings = get_settings() or {} reload_templates = settings.get('reload_templates', False) directories = settings.get('mako.directories') module_directory = settings.get('mako.module_directory') input_encoding = settings.get('mako.input_encoding', 'utf-8') if directories is None: raise ConfigurationError( 'Mako template used without a lookup path') directories = directories.splitlines() directories = [ abspath_from_resource_spec(d) for d in directories ] lookup = TemplateLookup(directories=directories, module_directory=module_directory, input_encoding=input_encoding, filesystem_checks=reload_templates) registry.registerUtility(lookup, IMakoLookup) _, path = resolve_resource_spec(path) return MakoLookupTemplateRenderer(path, lookup)
def get_template(self, uri): """Fetch a template from the cache, or check the filesystem for it In addition to the basic filesystem lookup, this subclass will use pkg_resource to load a file using the resource specification syntax. """ isabs = os.path.isabs(uri) if (not isabs) and (':' in uri): try: if self.filesystem_checks: return self._check(uri, self._collection[uri]) else: return self._collection[uri] except KeyError: pname, path = resolve_resource_spec(uri) srcfile = abspath_from_resource_spec(path, pname) if os.path.isfile(srcfile): return self._load(srcfile, uri) raise exceptions.TopLevelLookupException( "Cant locate template for uri %r" % uri) return TemplateLookup.get_template(self, uri)
def _callFUT(self, spec, package_name='__main__'): from pyramid.resource import resolve_resource_spec return resolve_resource_spec(spec, package_name)