Index: third_party/jinja2/loaders.py |
diff --git a/third_party/jinja2/loaders.py b/third_party/jinja2/loaders.py |
index 419a9c8c6c1566a918c041e5d28e767f85a1ff24..a9a2625274c28c36125ecd01f70601194e36d6a1 100644 |
--- a/third_party/jinja2/loaders.py |
+++ b/third_party/jinja2/loaders.py |
@@ -13,12 +13,10 @@ import sys |
import weakref |
from types import ModuleType |
from os import path |
-try: |
- from hashlib import sha1 |
-except ImportError: |
- from sha import new as sha1 |
+from hashlib import sha1 |
from jinja2.exceptions import TemplateNotFound |
-from jinja2.utils import LRUCache, open_if_exists, internalcode |
+from jinja2.utils import open_if_exists, internalcode |
+from jinja2._compat import string_types, iteritems |
def split_template_path(template): |
@@ -153,7 +151,7 @@ class FileSystemLoader(BaseLoader): |
""" |
def __init__(self, searchpath, encoding='utf-8'): |
- if isinstance(searchpath, basestring): |
+ if isinstance(searchpath, string_types): |
searchpath = [searchpath] |
self.searchpath = list(searchpath) |
self.encoding = encoding |
@@ -274,7 +272,7 @@ class DictLoader(BaseLoader): |
def get_source(self, environment, template): |
if template in self.mapping: |
source = self.mapping[template] |
- return source, None, lambda: source != self.mapping.get(template) |
+ return source, None, lambda: source == self.mapping.get(template) |
raise TemplateNotFound(template) |
def list_templates(self): |
@@ -306,7 +304,7 @@ class FunctionLoader(BaseLoader): |
rv = self.load_func(template) |
if rv is None: |
raise TemplateNotFound(template) |
- elif isinstance(rv, basestring): |
+ elif isinstance(rv, string_types): |
return rv, None, None |
return rv |
@@ -330,12 +328,16 @@ class PrefixLoader(BaseLoader): |
self.mapping = mapping |
self.delimiter = delimiter |
- def get_source(self, environment, template): |
+ def get_loader(self, template): |
try: |
prefix, name = template.split(self.delimiter, 1) |
loader = self.mapping[prefix] |
except (ValueError, KeyError): |
raise TemplateNotFound(template) |
+ return loader, name |
+ |
+ def get_source(self, environment, template): |
+ loader, name = self.get_loader(template) |
try: |
return loader.get_source(environment, name) |
except TemplateNotFound: |
@@ -343,9 +345,19 @@ class PrefixLoader(BaseLoader): |
# (the one that includes the prefix) |
raise TemplateNotFound(template) |
+ @internalcode |
+ def load(self, environment, name, globals=None): |
+ loader, local_name = self.get_loader(name) |
+ try: |
+ return loader.load(environment, local_name) |
+ except TemplateNotFound: |
+ # re-raise the exception with the correct fileame here. |
+ # (the one that includes the prefix) |
+ raise TemplateNotFound(name) |
+ |
def list_templates(self): |
result = [] |
- for prefix, loader in self.mapping.iteritems(): |
+ for prefix, loader in iteritems(self.mapping): |
for template in loader.list_templates(): |
result.append(prefix + self.delimiter + template) |
return result |
@@ -376,6 +388,15 @@ class ChoiceLoader(BaseLoader): |
pass |
raise TemplateNotFound(template) |
+ @internalcode |
+ def load(self, environment, name, globals=None): |
+ for loader in self.loaders: |
+ try: |
+ return loader.load(environment, name, globals) |
+ except TemplateNotFound: |
+ pass |
+ raise TemplateNotFound(name) |
+ |
def list_templates(self): |
found = set() |
for loader in self.loaders: |
@@ -408,7 +429,7 @@ class ModuleLoader(BaseLoader): |
# create a fake module that looks for the templates in the |
# path given. |
mod = _TemplateModule(package_name) |
- if isinstance(path, basestring): |
+ if isinstance(path, string_types): |
path = [path] |
else: |
path = list(path) |