Skip to content

Commit a805972

Browse files
committed
rate_limit: Remove unnecessary nesting.
`rate_limit` does not accept any arguments. It is unnecessary to nest the actual decorator in it. Signed-off-by: Zixuan James Li <[email protected]>
1 parent b0f30c4 commit a805972

File tree

2 files changed

+27
-30
lines changed

2 files changed

+27
-30
lines changed

zerver/decorator.py

+26-29
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ def _wrapped_view_func(
532532
request: HttpRequest, /, *args: ParamT.args, **kwargs: ParamT.kwargs
533533
) -> HttpResponse:
534534
process_client(request, request.user, is_browser_view=True, query=view_func.__name__)
535-
return rate_limit()(view_func)(request, *args, **kwargs)
535+
return rate_limit(view_func)(request, *args, **kwargs)
536536

537537
return _wrapped_view_func
538538

@@ -723,7 +723,7 @@ def _wrapped_func_arguments(
723723
) -> HttpResponse:
724724
user_profile = validate_api_key(request, None, api_key, False)
725725
if not skip_rate_limiting:
726-
limited_func = rate_limit()(view_func)
726+
limited_func = rate_limit(view_func)
727727
else:
728728
limited_func = view_func
729729
return limited_func(request, user_profile, *args, **kwargs)
@@ -787,7 +787,7 @@ def _wrapped_func_arguments(
787787
try:
788788
if not skip_rate_limiting:
789789
# Apply rate limiting
790-
target_view_func = rate_limit()(view_func)
790+
target_view_func = rate_limit(view_func)
791791
else:
792792
target_view_func = view_func
793793
return target_view_func(request, profile, *args, **kwargs)
@@ -864,7 +864,7 @@ def authenticate_log_and_execute_json(
864864
**kwargs: object,
865865
) -> HttpResponse:
866866
if not skip_rate_limiting:
867-
limited_view_func = rate_limit()(view_func)
867+
limited_view_func = rate_limit(view_func)
868868
else:
869869
limited_view_func = view_func
870870

@@ -1069,39 +1069,36 @@ def rate_limit_remote_server(
10691069
raise e
10701070

10711071

1072-
def rate_limit() -> Callable[[ViewFuncT], ViewFuncT]:
1073-
"""Rate-limits a view. Returns a decorator"""
1072+
def rate_limit(func: ViewFuncT) -> ViewFuncT:
1073+
"""Rate-limits a view."""
10741074

1075-
def wrapper(func: ViewFuncT) -> ViewFuncT:
1076-
@wraps(func)
1077-
def wrapped_func(request: HttpRequest, *args: object, **kwargs: object) -> HttpResponse:
1078-
1079-
# It is really tempting to not even wrap our original function
1080-
# when settings.RATE_LIMITING is False, but it would make
1081-
# for awkward unit testing in some situations.
1082-
if not settings.RATE_LIMITING:
1083-
return func(request, *args, **kwargs)
1075+
@wraps(func)
1076+
def wrapped_func(request: HttpRequest, *args: object, **kwargs: object) -> HttpResponse:
10841077

1085-
if client_is_exempt_from_rate_limiting(request):
1086-
return func(request, *args, **kwargs)
1078+
# It is really tempting to not even wrap our original function
1079+
# when settings.RATE_LIMITING is False, but it would make
1080+
# for awkward unit testing in some situations.
1081+
if not settings.RATE_LIMITING:
1082+
return func(request, *args, **kwargs)
10871083

1088-
user = request.user
1089-
remote_server = RequestNotes.get_notes(request).remote_server
1084+
if client_is_exempt_from_rate_limiting(request):
1085+
return func(request, *args, **kwargs)
10901086

1091-
if settings.ZILENCER_ENABLED and remote_server is not None:
1092-
rate_limit_remote_server(request, remote_server, domain="api_by_remote_server")
1093-
elif not user.is_authenticated:
1094-
rate_limit_request_by_ip(request, domain="api_by_ip")
1095-
return func(request, *args, **kwargs)
1096-
else:
1097-
assert isinstance(user, UserProfile)
1098-
rate_limit_user(request, user, domain="api_by_user")
1087+
user = request.user
1088+
remote_server = RequestNotes.get_notes(request).remote_server
10991089

1090+
if settings.ZILENCER_ENABLED and remote_server is not None:
1091+
rate_limit_remote_server(request, remote_server, domain="api_by_remote_server")
1092+
elif not user.is_authenticated:
1093+
rate_limit_request_by_ip(request, domain="api_by_ip")
11001094
return func(request, *args, **kwargs)
1095+
else:
1096+
assert isinstance(user, UserProfile)
1097+
rate_limit_user(request, user, domain="api_by_user")
11011098

1102-
return cast(ViewFuncT, wrapped_func) # https://github.com/python/mypy/issues/1927
1099+
return func(request, *args, **kwargs)
11031100

1104-
return wrapper
1101+
return cast(ViewFuncT, wrapped_func) # https://github.com/python/mypy/issues/1927
11051102

11061103

11071104
def return_success_on_head_request(

zerver/tests/test_decorators.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ def get_ratelimited_view(self) -> Callable[..., HttpResponse]:
632632
def f(req: Any) -> HttpResponse:
633633
return json_response(msg="some value")
634634

635-
f = rate_limit()(f)
635+
f = rate_limit(f)
636636

637637
return f
638638

0 commit comments

Comments
 (0)