From c94824744c673a3408b5b3f87d71f05f48e35f48 Mon Sep 17 00:00:00 2001 From: Akshay Date: Fri, 16 May 2025 14:11:54 +0530 Subject: [PATCH] Fix: Support decorator usage without parentheses for template_filter --- src/flask/sansio/app.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/flask/sansio/app.py b/src/flask/sansio/app.py index ceab45cb..9c85d234 100644 --- a/src/flask/sansio/app.py +++ b/src/flask/sansio/app.py @@ -32,7 +32,7 @@ from .scaffold import _endpoint_from_view_func from .scaffold import find_package from .scaffold import Scaffold from .scaffold import setupmethod - +from functools import wraps if t.TYPE_CHECKING: # pragma: no cover from werkzeug.wrappers import Response as BaseResponse @@ -674,11 +674,27 @@ class App(Scaffold): :param name: the optional name of the filter, otherwise the function name will be used. - """ - def decorator(f: T_template_filter) -> T_template_filter: - self.add_template_filter(f, name=name) - return f + """ + if callable(name): + func = name + name = func.__name__ # Use function name as default + self.add_template_filter(func, name=name) # Register filter with Flask + + @wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + + return wrapper + + def decorator(func: T_template_filter) -> T_template_filter: + self.add_template_filter(func, name=name) # Register filter with Flask + + @wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + + return wrapper return decorator