diff options
author | David Lord <davidism@gmail.com> | 2021-10-04 13:19:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-04 13:19:54 -0700 |
commit | 362cdcfd9ddbfb976cd3381185ad8e5ee58ea2be (patch) | |
tree | 92659b86fb47663c06a687a4ef0c0e2b97765fc2 | |
parent | 03146f50c5bab2af15862f405e55c4fd0fbcab08 (diff) | |
parent | a99f8c150b65e58dd2e75c951229ad7312ccea9c (diff) | |
download | jinja2-362cdcfd9ddbfb976cd3381185ad8e5ee58ea2be.tar.gz |
Merge pull request #1503 from pallets/except-chain
use exception chaining
-rw-r--r-- | src/jinja2/filters.py | 8 | ||||
-rw-r--r-- | src/jinja2/lexer.py | 2 | ||||
-rw-r--r-- | src/jinja2/loaders.py | 20 | ||||
-rw-r--r-- | src/jinja2/nodes.py | 32 | ||||
-rw-r--r-- | src/jinja2/utils.py | 2 |
5 files changed, 32 insertions, 32 deletions
diff --git a/src/jinja2/filters.py b/src/jinja2/filters.py index c8d41da..ffb98bf 100644 --- a/src/jinja2/filters.py +++ b/src/jinja2/filters.py @@ -1350,8 +1350,8 @@ def do_reverse(value: t.Union[str, t.Iterable[V]]) -> t.Union[str, t.Iterable[V] rv = list(value) rv.reverse() return rv - except TypeError: - raise FilterArgumentError("argument must be iterable") + except TypeError as e: + raise FilterArgumentError("argument must be iterable") from e @pass_environment @@ -1691,7 +1691,7 @@ def prepare_map( name = args[0] args = args[1:] except LookupError: - raise FilterArgumentError("map requires a filter argument") + raise FilterArgumentError("map requires a filter argument") from None def func(item: t.Any) -> t.Any: return context.environment.call_filter( @@ -1712,7 +1712,7 @@ def prepare_select_or_reject( try: attr = args[0] except LookupError: - raise FilterArgumentError("Missing parameter for attribute name") + raise FilterArgumentError("Missing parameter for attribute name") from None transfunc = make_attrgetter(context.environment, attr) off = 1 diff --git a/src/jinja2/lexer.py b/src/jinja2/lexer.py index 9726012..c25ab0f 100644 --- a/src/jinja2/lexer.py +++ b/src/jinja2/lexer.py @@ -655,7 +655,7 @@ class Lexer: ) except Exception as e: msg = str(e).split(":")[-1].strip() - raise TemplateSyntaxError(msg, lineno, name, filename) + raise TemplateSyntaxError(msg, lineno, name, filename) from e elif token == TOKEN_INTEGER: value = int(value_str.replace("_", ""), 0) elif token == TOKEN_FLOAT: diff --git a/src/jinja2/loaders.py b/src/jinja2/loaders.py index bde6a1c..db04f0f 100644 --- a/src/jinja2/loaders.py +++ b/src/jinja2/loaders.py @@ -336,8 +336,8 @@ class PackageLoader(BaseLoader): # Package is a zip file. try: source = self._loader.get_data(p) # type: ignore - except OSError: - raise TemplateNotFound(template) + except OSError as e: + raise TemplateNotFound(template) from e # Could use the zip's mtime for all template mtimes, but # would need to safely reload the module if it's out of @@ -476,8 +476,8 @@ class PrefixLoader(BaseLoader): try: prefix, name = template.split(self.delimiter, 1) loader = self.mapping[prefix] - except (ValueError, KeyError): - raise TemplateNotFound(template) + except (ValueError, KeyError) as e: + raise TemplateNotFound(template) from e return loader, name def get_source( @@ -486,10 +486,10 @@ class PrefixLoader(BaseLoader): loader, name = self.get_loader(template) try: return loader.get_source(environment, name) - except TemplateNotFound: + except TemplateNotFound as e: # re-raise the exception with the correct filename here. # (the one that includes the prefix) - raise TemplateNotFound(template) + raise TemplateNotFound(template) from e @internalcode def load( @@ -501,10 +501,10 @@ class PrefixLoader(BaseLoader): loader, local_name = self.get_loader(name) try: return loader.load(environment, local_name, globals) - except TemplateNotFound: + except TemplateNotFound as e: # re-raise the exception with the correct filename here. # (the one that includes the prefix) - raise TemplateNotFound(name) + raise TemplateNotFound(name) from e def list_templates(self) -> t.List[str]: result = [] @@ -627,8 +627,8 @@ class ModuleLoader(BaseLoader): if mod is None: try: mod = __import__(module, None, None, ["root"]) - except ImportError: - raise TemplateNotFound(name) + except ImportError as e: + raise TemplateNotFound(name) from e # remove the entry from sys.modules, we only want the attribute # on the module object we have stored on the loader. diff --git a/src/jinja2/nodes.py b/src/jinja2/nodes.py index 1feb543..226e729 100644 --- a/src/jinja2/nodes.py +++ b/src/jinja2/nodes.py @@ -507,8 +507,8 @@ class BinExpr(Expr): f = _binop_to_func[self.operator] try: return f(self.left.as_const(eval_ctx), self.right.as_const(eval_ctx)) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e class UnaryExpr(Expr): @@ -531,8 +531,8 @@ class UnaryExpr(Expr): f = _uaop_to_func[self.operator] try: return f(self.node.as_const(eval_ctx)) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e class Name(Expr): @@ -723,14 +723,14 @@ def args_as_const( if node.dyn_args is not None: try: args.extend(node.dyn_args.as_const(eval_ctx)) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e if node.dyn_kwargs is not None: try: kwargs.update(node.dyn_kwargs.as_const(eval_ctx)) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e return args, kwargs @@ -779,8 +779,8 @@ class _FilterTestCommon(Expr): try: return func(*args, **kwargs) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e class Filter(_FilterTestCommon): @@ -847,8 +847,8 @@ class Getitem(Expr): return eval_ctx.environment.getitem( self.node.as_const(eval_ctx), self.arg.as_const(eval_ctx) ) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e class Getattr(Expr): @@ -869,8 +869,8 @@ class Getattr(Expr): try: return eval_ctx.environment.getattr(self.node.as_const(eval_ctx), self.attr) - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e class Slice(Expr): @@ -929,8 +929,8 @@ class Compare(Expr): return False value = new_value - except Exception: - raise Impossible() + except Exception as e: + raise Impossible() from e return result diff --git a/src/jinja2/utils.py b/src/jinja2/utils.py index 2a2641c..567185f 100644 --- a/src/jinja2/utils.py +++ b/src/jinja2/utils.py @@ -824,7 +824,7 @@ class Namespace: try: return self.__attrs[name] except KeyError: - raise AttributeError(name) + raise AttributeError(name) from None def __setitem__(self, name: str, value: t.Any) -> None: self.__attrs[name] = value |