Open
Description
I've observed a change in behaviour between 3.1.4 and 3.1.5 where meta.find_undeclared_variables
is now returning variables that are set
in all branches of an if
statement.
For example with the following:
from jinja2 import Environment, meta
env = Environment()
template = """\
{% if control == 'something' %}
{% set output = 1 %}
{% elif control == 'something else' %}
{% set output = 2 %}
{% else %}
{% set output = 3 %}
{% endif %}
{{ output }}
"""
result = meta.find_undeclared_variables(env.parse(template))
assert result == {'control'}
With jinja2 version 3.1.4, this runs without error. With jinja2 version 3.1.5, this errors becasue result
contains both "control" and "output". I believe the 3.1.4 behaviour is correct in this instance.
Reading the changelog, I suspect that the fix for #1253 (PR #1665) looks likely to be the cause of this change.
Environment:
- Python version: 3.10.12
- Jinja version: 3.1.5
Metadata
Metadata
Assignees
Labels
No labels
Activity