diff options
author | David Lord <davidism@gmail.com> | 2022-07-04 07:40:11 -0700 |
---|---|---|
committer | David Lord <davidism@gmail.com> | 2022-07-04 07:40:11 -0700 |
commit | 94fd2d9241410e6f7467ea02cf60e11f26133e31 (patch) | |
tree | 3cc77440abb346ba4a32ebdacc1bb42366f459c8 /src | |
parent | 0d177809e201db4592e7802d121142c7872688c2 (diff) | |
parent | e9cb0a5fb58c44cac8ccfb1f86536754c2c0e273 (diff) | |
download | jinja2-94fd2d9241410e6f7467ea02cf60e11f26133e31.tar.gz |
Merge branch '3.1.x'
Diffstat (limited to 'src')
-rw-r--r-- | src/jinja2/loaders.py | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/jinja2/loaders.py b/src/jinja2/loaders.py index d2f9809..caebf80 100644 --- a/src/jinja2/loaders.py +++ b/src/jinja2/loaders.py @@ -15,7 +15,6 @@ from types import ModuleType from .exceptions import TemplateNotFound from .utils import internalcode -from .utils import open_if_exists if t.TYPE_CHECKING: from .environment import Environment @@ -193,29 +192,30 @@ class FileSystemLoader(BaseLoader): self, environment: "Environment", template: str ) -> t.Tuple[str, str, t.Callable[[], bool]]: pieces = split_template_path(template) + for searchpath in self.searchpath: # Use posixpath even on Windows to avoid "drive:" or UNC # segments breaking out of the search directory. filename = posixpath.join(searchpath, *pieces) - f = open_if_exists(filename) - if f is None: - continue - try: - contents = f.read().decode(self.encoding) - finally: - f.close() - mtime = os.path.getmtime(filename) + if os.path.isfile(filename): + break + else: + raise TemplateNotFound(template) + + with open(filename, encoding=self.encoding) as f: + contents = f.read() - def uptodate() -> bool: - try: - return os.path.getmtime(filename) == mtime - except OSError: - return False + mtime = os.path.getmtime(filename) - # Use normpath to convert Windows altsep to sep. - return contents, os.path.normpath(filename), uptodate - raise TemplateNotFound(template) + def uptodate() -> bool: + try: + return os.path.getmtime(filename) == mtime + except OSError: + return False + + # Use normpath to convert Windows altsep to sep. + return contents, os.path.normpath(filename), uptodate def list_templates(self) -> t.List[str]: found = set() |