Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/flask/sansio/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -672,10 +672,19 @@ def template_filter(
def reverse(s):
return s[::-1]

You must include parentheses when using this decorator,
even if no arguments are provided.

:param name: the optional name of the filter, otherwise the
function name will be used.
"""

if callable(name):
raise TypeError(
"Did you mean to use @app.template_filter()? "
"Missing parentheses () in decorator"
)

def decorator(f: T_template_filter) -> T_template_filter:
self.add_template_filter(f, name=name)
return f
Expand Down
8 changes: 8 additions & 0 deletions tests/test_templating.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,14 @@ def my_reverse(s):
assert app.jinja_env.filters["my_reverse"]("abcd") == "dcba"


def test_template_filter_requires_parentheses(app):
with pytest.raises(TypeError):

@app.template_filter
def my_reverse(s):
return s[::-1]


def test_add_template_filter(app):
def my_reverse(s):
return s[::-1]
Expand Down