Prevent scope lookup from accidentally matching callable builtins #118
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #117
The current lookup by scope has false positives when the variable in the template coincidentally matches some Python builtin on the type. For example,
{{title}}
matchesstr.title
when it shouldn't. This fix detects when the attribute found in the scope is callable and raises an exception to continue as normal. This fix does not break the intended ability to have callable lambdas in the template.Before the fix:
(Here, it found a
'title'
attribute on'bob'
and got messed up.)After the fix:
Callable functionality is still working fine:
The lambda example from the chevron readme still works as before too.