You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
fromjinja2importEnvironment, metaenv=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))
assertresult== {'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
The text was updated successfully, but these errors were encountered:
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 areset
in all branches of anif
statement.For example with the following:
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:
The text was updated successfully, but these errors were encountered: