From: Eugene Toder Date: Tue, 26 Nov 2024 07:28:34 +0000 (-0500) Subject: Make _MiddlewareFactory compatible with Callable (#2768) X-Git-Tag: 0.42.0~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=13d0c1fbcdb6c6f861155beed352112843e57717;p=thirdparty%2Fstarlette.git Make _MiddlewareFactory compatible with Callable (#2768) --- diff --git a/starlette/middleware/__init__.py b/starlette/middleware/__init__.py index 8e0a54ed..5164e49e 100644 --- a/starlette/middleware/__init__.py +++ b/starlette/middleware/__init__.py @@ -14,7 +14,7 @@ P = ParamSpec("P") class _MiddlewareFactory(Protocol[P]): - def __call__(self, app: ASGIApp, *args: P.args, **kwargs: P.kwargs) -> ASGIApp: ... # pragma: no cover + def __call__(self, app: ASGIApp, /, *args: P.args, **kwargs: P.kwargs) -> ASGIApp: ... # pragma: no cover class Middleware: diff --git a/tests/test_applications.py b/tests/test_applications.py index 29c011a2..db2a6050 100644 --- a/tests/test_applications.py +++ b/tests/test_applications.py @@ -3,7 +3,7 @@ from __future__ import annotations import os from contextlib import asynccontextmanager from pathlib import Path -from typing import AsyncGenerator, AsyncIterator, Generator +from typing import AsyncGenerator, AsyncIterator, Callable, Generator import anyio.from_thread import pytest @@ -567,9 +567,12 @@ def test_middleware_factory(test_client_factory: TestClientFactory) -> None: return _app + def get_middleware_factory() -> Callable[[ASGIApp, str], ASGIApp]: + return _middleware_factory + app = Starlette() app.add_middleware(_middleware_factory, arg="foo") - app.add_middleware(_middleware_factory, arg="bar") + app.add_middleware(get_middleware_factory(), "bar") with test_client_factory(app): pass