Skip to content

Upgrading starlette 0.35 to 0.36

Safe0.35.1 → 0.36.3New4Fixed4

SafeUpgrade verdict

Only new features and fixes in this range.

  • Nothing in this range needs changes to your code. It adds features and fixes.
Nothing to change

No breaking, platform, security or deprecated items in this range.

Nothing in this upgrade needs a code or configuration change.

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • removed: property Starlette.routes -> typing.List[BaseRoute]
  • changed: constructor Starlette(debug: bool=…, routes: typing.Sequence[BaseRoute] | None=…, middleware: typing.Sequence[Middleware] | None=…, exception_handlers: typing.Mapping[typing.Any, ExceptionHandler] | None=…, on_startup: typing.Sequence[typing.Callable[[], typing.Any]] | None=…, on_shutdown: typing.Sequence[typing.Callable[[], typing.Any]] | None=…, lifespan: typing.Optional[Lifespan[AppType]]=…) -… → constructor Starlette(debug: bool=…, routes: typing.Sequence[BaseRoute] | None=…, middleware: typing.Sequence[Middleware] | None=…, exception_handlers: typing.Mapping[typing.Any, ExceptionHandler] | None=…, on_startup: typing.Sequence[typing.Callable[[], typing.Any]] | None=…, on_shutdown: typing.Sequence[typing.Callable[[], typing.Any]] | None=…, lifespan: Lifespan[AppType] | None=…) -> None
  • changed: method Starlette.route(path: str, methods: typing.List[str] | None=…, name: str | None=…, include_in_schema: bool=…) -> typing.Callable → method Starlette.route(path: str, methods: list[str] | None=…, name: str | None=…, include_in_schema: bool=…) -> typing.Callable
  • added: property Starlette.routes -> list[BaseRoute]
  • changed: async method AuthenticationBackend.authenticate(conn: HTTPConnection) -> typing.Optional[typing.Tuple[AuthCredentials, BaseUser]] → async method AuthenticationBackend.authenticate(conn: HTTPConnection) -> tuple[AuthCredentials, BaseUser] | None
  • changed: constructor AuthCredentials(scopes: typing.Optional[typing.Sequence[str]]=…) → constructor AuthCredentials(scopes: typing.Sequence[str] | None=…)
  • changed: function requires(scopes: typing.Union[str, typing.Sequence[str]], status_code: int=…, redirect: typing.Optional[str]=…) -> typing.Callable[[typing.Callable[_P, typing.Any]], typing.Callable[_P, typing.Any]] → function requires(scopes: str | typing.Sequence[str], status_code: int=…, redirect: str | None=…) -> typing.Callable[[typing.Callable[_P, typing.Any]], typing.Callable[_P, typing.Any]]
  • changed: constructor BackgroundTasks(tasks: typing.Optional[typing.Sequence[BackgroundTask]]=…) → constructor BackgroundTasks(tasks: typing.Sequence[BackgroundTask] | None=…)
  • changed: async function run_until_first_complete(*args: typing.Tuple[typing.Callable, dict]) -> None → async function run_until_first_complete(*args: tuple[typing.Callable, dict]) -> None
  • changed: constructor Config(env_file: typing.Optional[typing.Union[str, Path]]=…, environ: typing.Mapping[str, str]=…, env_prefix: str=…) -> None → constructor Config(env_file: str | Path | None=…, environ: typing.Mapping[str, str]=…, env_prefix: str=…) -> None
  • changed: method Config.get(key: str, cast: typing.Optional[typing.Callable[[typing.Any], typing.Any]]=…, default: typing.Any=…) -> typing.Any → method Config.get(key: str, cast: typing.Callable[[typing.Any], typing.Any] | None=…, default: typing.Any=…) -> typing.Any
  • removed: property Headers.raw -> typing.List[typing.Tuple[bytes, bytes]]
  • removed: property MutableHeaders.raw -> typing.List[typing.Tuple[bytes, bytes]]
  • removed: property URL.hostname -> typing.Union[None, str]
  • removed: property URL.password -> typing.Union[None, str]
  • removed: property URL.port -> typing.Optional[int]
  • removed: property URL.username -> typing.Union[None, str]
  • removed: property UploadFile.content_type -> typing.Optional[str]
  • changed: constructor CommaSeparatedStrings(value: typing.Union[str, typing.Sequence[str]]) → constructor CommaSeparatedStrings(value: str | typing.Sequence[str])
  • changed: constructor FormData(*args: typing.Union[FormData, typing.Mapping[str, typing.Union[str, UploadFile]], typing.List[typing.Tuple[str, typing.Union[str, UploadFile]]]], **kwargs: typing.Union[str, UploadFile]) -> None → constructor FormData(*args: FormData | typing.Mapping[str, str | UploadFile] | list[tuple[str, str | UploadFile]], **kwargs: str | UploadFile) -> None
  • changed: constructor Headers(headers: typing.Optional[typing.Mapping[str, str]]=…, raw: typing.Optional[typing.List[typing.Tuple[bytes, bytes]]]=…, scope: typing.Optional[typing.MutableMapping[str, typing.Any]]=…) -> None → constructor Headers(headers: typing.Mapping[str, str] | None=…, raw: list[tuple[bytes, bytes]] | None=…, scope: typing.MutableMapping[str, typing.Any] | None=…) -> None
  • changed: constructor ImmutableMultiDict(*args: typing.Union[ImmutableMultiDict[_KeyType, _CovariantValueType], typing.Mapping[_KeyType, _CovariantValueType], typing.Iterable[typing.Tuple[_KeyType, _CovariantValueType]]], **kwargs: typing.Any) -> None → constructor ImmutableMultiDict(*args: ImmutableMultiDict[_KeyType, _CovariantValueType] | typing.Mapping[_KeyType, _CovariantValueType] | typing.Iterable[typing.Tuple[_KeyType, _CovariantValueType]], **kwargs: typing.Any) -> None
  • changed: constructor QueryParams(*args: typing.Union[ImmutableMultiDict[typing.Any, typing.Any], typing.Mapping[typing.Any, typing.Any], typing.List[typing.Tuple[typing.Any, typing.Any]], str, bytes], **kwargs: typing.Any) -> None → constructor QueryParams(*args: ImmutableMultiDict[typing.Any, typing.Any] | typing.Mapping[typing.Any, typing.Any] | list[tuple[typing.Any, typing.Any]] | str | bytes, **kwargs: typing.Any) -> None
  • changed: constructor State(state: typing.Optional[typing.Dict[str, typing.Any]]=…) → constructor State(state: dict[str, typing.Any] | None=…)
  • changed: constructor URL(url: str=…, scope: typing.Optional[Scope]=…, **components: typing.Any) -> None → constructor URL(url: str=…, scope: Scope | None=…, **components: typing.Any) -> None
  • changed: constructor UploadFile(file: typing.BinaryIO, *, size: typing.Optional[int]=…, filename: typing.Optional[str]=…, headers: typing.Optional[Headers]=…) -> None → constructor UploadFile(file: typing.BinaryIO, *, size: int | None=…, filename: str | None=…, headers: Headers | None=…) -> None
  • changed: method Headers.getlist(key: str) -> typing.List[str] → method Headers.getlist(key: str) -> list[str]
  • changed: method Headers.items() -> typing.List[typing.Tuple[str, str]] → method Headers.items() -> list[tuple[str, str]]
  • changed: method Headers.keys() -> typing.List[str] → method Headers.keys() -> list[str]
  • changed: method Headers.values() -> typing.List[str] → method Headers.values() -> list[str]
  • changed: method ImmutableMultiDict.getlist(key: typing.Any) -> typing.List[_CovariantValueType] → method ImmutableMultiDict.getlist(key: typing.Any) -> list[_CovariantValueType]
  • changed: method ImmutableMultiDict.multi_items() -> typing.List[typing.Tuple[_KeyType, _CovariantValueType]] → method ImmutableMultiDict.multi_items() -> list[tuple[_KeyType, _CovariantValueType]]
  • changed: method MultiDict.popitem() -> typing.Tuple[typing.Any, typing.Any] → method MultiDict.popitem() -> tuple[typing.Any, typing.Any]
  • changed: method MultiDict.poplist(key: typing.Any) -> typing.List[typing.Any] → method MultiDict.poplist(key: typing.Any) -> list[typing.Any]
  • changed: method MultiDict.setlist(key: typing.Any, values: typing.List[typing.Any]) -> None → method MultiDict.setlist(key: typing.Any, values: list[typing.Any]) -> None
  • changed: method MultiDict.update(*args: typing.Union[MultiDict, typing.Mapping[typing.Any, typing.Any], typing.List[typing.Tuple[typing.Any, typing.Any]]], **kwargs: typing.Any) -> None → method MultiDict.update(*args: MultiDict | typing.Mapping[typing.Any, typing.Any] | list[tuple[typing.Any, typing.Any]], **kwargs: typing.Any) -> None
  • changed: method URL.remove_query_params(keys: typing.Union[str, typing.Sequence[str]]) -> URL → method URL.remove_query_params(keys: str | typing.Sequence[str]) -> URL
  • changed: method URLPath.make_absolute_url(base_url: typing.Union[str, URL]) -> URL → method URLPath.make_absolute_url(base_url: str | URL) -> URL
  • added: property Headers.raw -> list[tuple[bytes, bytes]]
  • added: property MutableHeaders.raw -> list[tuple[bytes, bytes]]
  • added: property URL.hostname -> None | str
  • added: property URL.password -> None | str
  • added: property URL.port -> int | None
  • added: property URL.username -> None | str
  • added: property UploadFile.content_type -> str | None
  • changed: field WebSocketEndpoint.encoding: typing.Optional[str] → field WebSocketEndpoint.encoding: str | None
  • changed: constructor HTTPException(status_code: int, detail: typing.Optional[str]=…, headers: typing.Optional[typing.Dict[str, str]]=…) -> None → constructor HTTPException(status_code: int, detail: str | None=…, headers: dict[str, str] | None=…) -> None
  • changed: constructor WebSocketException(code: int, reason: typing.Optional[str]=…) -> None → constructor WebSocketException(code: int, reason: str | None=…) -> None
  • changed: constructor MultiPartParser(headers: Headers, stream: typing.AsyncGenerator[bytes, None], *, max_files: typing.Union[int, float]=…, max_fields: typing.Union[int, float]=…) -> None → constructor MultiPartParser(headers: Headers, stream: typing.AsyncGenerator[bytes, None], *, max_files: int | float=…, max_fields: int | float=…) -> None
  • changed: field MultipartPart.content_disposition: typing.Optional[bytes] → field MultipartPart.content_disposition: bytes | None
  • changed: field MultipartPart.file: typing.Optional[UploadFile] → field MultipartPart.file: UploadFile | None
  • changed: field MultipartPart.item_headers: typing.List[typing.Tuple[bytes, bytes]] → field MultipartPart.item_headers: list[tuple[bytes, bytes]]
  • changed: constructor Middleware(cls: Type[_MiddlewareClass[P]], *args: P.args, **kwargs: P.kwargs) -> None → constructor Middleware(cls: type[_MiddlewareClass[P]], *args: P.args, **kwargs: P.kwargs) -> None
  • removed: property HTTPConnection.client -> typing.Optional[Address]
  • removed: property HTTPConnection.cookies -> typing.Dict[str, str]
  • removed: property HTTPConnection.path_params -> typing.Dict[str, typing.Any]
  • removed: property HTTPConnection.session -> typing.Dict[str, typing.Any]
  • changed: constructor HTTPConnection(scope: Scope, receive: typing.Optional[Receive]=…) -> None → constructor HTTPConnection(scope: Scope, receive: Receive | None=…) -> None
  • changed: function cookie_parser(cookie_string: str) -> typing.Dict[str, str] → function cookie_parser(cookie_string: str) -> dict[str, str]
  • changed: method Request.form(*, max_files: typing.Union[int, float]=…, max_fields: typing.Union[int, float]=…) -> AwaitableOrContextManager[FormData] → method Request.form(*, max_files: int | float=…, max_fields: int | float=…) -> AwaitableOrContextManager[FormData]
  • added: property HTTPConnection.client -> Address | None
  • added: property HTTPConnection.cookies -> dict[str, str]
  • added: property HTTPConnection.path_params -> dict[str, typing.Any]
  • added: property HTTPConnection.session -> dict[str, typing.Any]
  • changed: constructor FileResponse(path: typing.Union[str, os.PathLike[str]], status_code: int=…, headers: typing.Optional[typing.Mapping[str, str]]=…, media_type: typing.Optional[str]=…, background: typing.Optional[BackgroundTask]=…, filename: typing.Optional[str]=…, stat_result: typing.Optional[os.stat_result]=…, method: typing.Optional[str]=…, content_disposition_type: str=…) -> None → constructor FileResponse(path: str | os.PathLike[str], status_code: int=…, headers: typing.Mapping[str, str] | None=…, media_type: str | None=…, background: BackgroundTask | None=…, filename: str | None=…, stat_result: os.stat_result | None=…, method: str | None=…, content_disposition_type: str=…) -> None
  • changed: constructor JSONResponse(content: typing.Any, status_code: int=…, headers: typing.Optional[typing.Mapping[str, str]]=…, media_type: typing.Optional[str]=…, background: typing.Optional[BackgroundTask]=…) -> None → constructor JSONResponse(content: typing.Any, status_code: int=…, headers: typing.Mapping[str, str] | None=…, media_type: str | None=…, background: BackgroundTask | None=…) -> None
  • changed: constructor RedirectResponse(url: typing.Union[str, URL], status_code: int=…, headers: typing.Optional[typing.Mapping[str, str]]=…, background: typing.Optional[BackgroundTask]=…) -> None → constructor RedirectResponse(url: str | URL, status_code: int=…, headers: typing.Mapping[str, str] | None=…, background: BackgroundTask | None=…) -> None
  • changed: constructor Response(content: typing.Any=…, status_code: int=…, headers: typing.Optional[typing.Mapping[str, str]]=…, media_type: typing.Optional[str]=…, background: typing.Optional[BackgroundTask]=…) -> None → constructor Response(content: typing.Any=…, status_code: int=…, headers: typing.Mapping[str, str] | None=…, media_type: str | None=…, background: BackgroundTask | None=…) -> None
  • changed: constructor StreamingResponse(content: ContentStream, status_code: int=…, headers: typing.Optional[typing.Mapping[str, str]]=…, media_type: typing.Optional[str]=…, background: typing.Optional[BackgroundTask]=…) -> None → constructor StreamingResponse(content: ContentStream, status_code: int=…, headers: typing.Mapping[str, str] | None=…, media_type: str | None=…, background: BackgroundTask | None=…) -> None
  • changed: method Response.delete_cookie(key: str, path: str=…, domain: typing.Optional[str]=…, secure: bool=…, httponly: bool=…, samesite: typing.Optional[typing.Literal['lax', 'strict', 'none']]=…) -> None → method Response.delete_cookie(key: str, path: str=…, domain: str | None=…, secure: bool=…, httponly: bool=…, samesite: typing.Literal['lax', 'strict', 'none'] | None=…) -> None
  • changed: method Response.init_headers(headers: typing.Optional[typing.Mapping[str, str]]=…) -> None → method Response.init_headers(headers: typing.Mapping[str, str] | None=…) -> None
  • changed: method Response.set_cookie(key: str, value: str=…, max_age: typing.Optional[int]=…, expires: typing.Optional[typing.Union[datetime, str, int]]=…, path: str=…, domain: typing.Optional[str]=…, secure: bool=…, httponly: bool=…, samesite: typing.Optional[typing.Literal['lax', 'strict', 'none']]=…) -> None → method Response.set_cookie(key: str, value: str=…, max_age: int | None=…, expires: datetime | str | int | None=…, path: str=…, domain: str | None=…, secure: bool=…, httponly: bool=…, samesite: typing.Literal['lax', 'strict', 'none'] | None=…) -> None
  • removed: property Host.routes -> typing.List[BaseRoute]
  • removed: property Mount.routes -> typing.List[BaseRoute]
  • changed: constructor Host(host: str, app: ASGIApp, name: typing.Optional[str]=…) -> None → constructor Host(host: str, app: ASGIApp, name: str | None=…) -> None
  • changed: constructor Mount(path: str, app: typing.Optional[ASGIApp]=…, routes: typing.Optional[typing.Sequence[BaseRoute]]=…, name: typing.Optional[str]=…, *, middleware: typing.Optional[typing.Sequence[Middleware]]=…) -> None → constructor Mount(path: str, app: ASGIApp | None=…, routes: typing.Sequence[BaseRoute] | None=…, name: str | None=…, *, middleware: typing.Sequence[Middleware] | None=…) -> None
  • changed: constructor NoMatchFound(name: str, path_params: typing.Dict[str, typing.Any]) -> None → constructor NoMatchFound(name: str, path_params: dict[str, typing.Any]) -> None
  • changed: constructor Route(path: str, endpoint: typing.Callable[..., typing.Any], *, methods: typing.Optional[typing.List[str]]=…, name: typing.Optional[str]=…, include_in_schema: bool=…, middleware: typing.Optional[typing.Sequence[Middleware]]=…) -> None → constructor Route(path: str, endpoint: typing.Callable[..., typing.Any], *, methods: list[str] | None=…, name: str | None=…, include_in_schema: bool=…, middleware: typing.Sequence[Middleware] | None=…) -> None
  • changed: constructor Router(routes: typing.Optional[typing.Sequence[BaseRoute]]=…, redirect_slashes: bool=…, default: typing.Optional[ASGIApp]=…, on_startup: typing.Optional[typing.Sequence[typing.Callable[[], typing.Any]]]=…, on_shutdown: typing.Optional[typing.Sequence[typing.Callable[[], typing.Any]]]=…, lifespan: typing.Optional[Lifespan[typing.Any]]=…, *, middleware: typing.Optional[typing.Sequence[M… → constructor Router(routes: typing.Sequence[BaseRoute] | None=…, redirect_slashes: bool=…, default: ASGIApp | None=…, on_startup: typing.Sequence[typing.Callable[[], typing.Any]] | None=…, on_shutdown: typing.Sequence[typing.Callable[[], typing.Any]] | None=…, lifespan: Lifespan[typing.Any] | None=…, *, middleware: typing.Sequence[Middleware] | None=…) -> None
  • changed: constructor WebSocketRoute(path: str, endpoint: typing.Callable[..., typing.Any], *, name: typing.Optional[str]=…, middleware: typing.Optional[typing.Sequence[Middleware]]=…) -> None → constructor WebSocketRoute(path: str, endpoint: typing.Callable[..., typing.Any], *, name: str | None=…, middleware: typing.Sequence[Middleware] | None=…) -> None
  • changed: function compile_path(path: str) -> typing.Tuple[typing.Pattern[str], str, typing.Dict[str, Convertor[typing.Any]]] → function compile_path(path: str) -> tuple[typing.Pattern[str], str, dict[str, Convertor[typing.Any]]]
  • changed: function replace_params(path: str, param_convertors: typing.Dict[str, Convertor[typing.Any]], path_params: typing.Dict[str, str]) -> typing.Tuple[str, typing.Dict[str, str]] → function replace_params(path: str, param_convertors: dict[str, Convertor[typing.Any]], path_params: dict[str, str]) -> tuple[str, dict[str, str]]
  • changed: method BaseRoute.matches(scope: Scope) -> typing.Tuple[Match, Scope] → method BaseRoute.matches(scope: Scope) -> tuple[Match, Scope]
  • changed: method Host.matches(scope: Scope) -> typing.Tuple[Match, Scope] → method Host.matches(scope: Scope) -> tuple[Match, Scope]
  • changed: method Route.matches(scope: Scope) -> typing.Tuple[Match, Scope] → method Route.matches(scope: Scope) -> tuple[Match, Scope]
  • changed: method Router.add_route(path: str, endpoint: typing.Callable[[Request], typing.Union[typing.Awaitable[Response], Response]], methods: typing.Optional[typing.List[str]]=…, name: typing.Optional[str]=…, include_in_schema: bool=…) -> None → method Router.add_route(path: str, endpoint: typing.Callable[[Request], typing.Awaitable[Response] | Response], methods: list[str] | None=…, name: str | None=…, include_in_schema: bool=…) -> None
  • changed: method Router.add_websocket_route(path: str, endpoint: typing.Callable[[WebSocket], typing.Awaitable[None]], name: typing.Optional[str]=…) -> None → method Router.add_websocket_route(path: str, endpoint: typing.Callable[[WebSocket], typing.Awaitable[None]], name: str | None=…) -> None
  • changed: method Router.host(host: str, app: ASGIApp, name: typing.Optional[str]=…) -> None → method Router.host(host: str, app: ASGIApp, name: str | None=…) -> None
  • changed: method Router.mount(path: str, app: ASGIApp, name: typing.Optional[str]=…) -> None → method Router.mount(path: str, app: ASGIApp, name: str | None=…) -> None
  • changed: method Router.route(path: str, methods: typing.Optional[typing.List[str]]=…, name: typing.Optional[str]=…, include_in_schema: bool=…) -> typing.Callable → method Router.route(path: str, methods: list[str] | None=…, name: str | None=…, include_in_schema: bool=…) -> typing.Callable
  • changed: method Router.websocket_route(path: str, name: typing.Optional[str]=…) -> typing.Callable → method Router.websocket_route(path: str, name: str | None=…) -> typing.Callable
  • changed: method WebSocketRoute.matches(scope: Scope) -> typing.Tuple[Match, Scope] → method WebSocketRoute.matches(scope: Scope) -> tuple[Match, Scope]
  • added: property Host.routes -> list[BaseRoute]
  • added: property Mount.routes -> list[BaseRoute]
  • changed: constructor SchemaGenerator(base_schema: typing.Dict[str, typing.Any]) -> None → constructor SchemaGenerator(base_schema: dict[str, typing.Any]) -> None
  • changed: method BaseSchemaGenerator.get_endpoints(routes: typing.List[BaseRoute]) -> typing.List[EndpointInfo] → method BaseSchemaGenerator.get_endpoints(routes: list[BaseRoute]) -> list[EndpointInfo]
  • changed: method BaseSchemaGenerator.get_schema(routes: typing.List[BaseRoute]) -> typing.Dict[str, typing.Any] → method BaseSchemaGenerator.get_schema(routes: list[BaseRoute]) -> dict[str, typing.Any]
  • changed: method BaseSchemaGenerator.parse_docstring(func_or_method: typing.Callable[..., typing.Any]) -> typing.Dict[str, typing.Any] → method BaseSchemaGenerator.parse_docstring(func_or_method: typing.Callable[..., typing.Any]) -> dict[str, typing.Any]
  • changed: method SchemaGenerator.get_schema(routes: typing.List[BaseRoute]) -> typing.Dict[str, typing.Any] → method SchemaGenerator.get_schema(routes: list[BaseRoute]) -> dict[str, typing.Any]
  • changed: constructor StaticFiles(*, directory: typing.Optional[PathLike]=…, packages: typing.Optional[typing.List[typing.Union[str, typing.Tuple[str, str]]]]=…, html: bool=…, check_dir: bool=…, follow_symlink: bool=…) -> None → constructor StaticFiles(*, directory: PathLike | None=…, packages: list[str | tuple[str, str]] | None=…, html: bool=…, check_dir: bool=…, follow_symlink: bool=…) -> None
  • changed: method StaticFiles.get_directories(directory: typing.Optional[PathLike]=…, packages: typing.Optional[typing.List[typing.Union[str, typing.Tuple[str, str]]]]=…) -> typing.List[PathLike] → method StaticFiles.get_directories(directory: PathLike | None=…, packages: list[str | tuple[str, str]] | None=…) -> list[PathLike]
  • changed: method StaticFiles.lookup_path(path: str) -> typing.Tuple[str, typing.Optional[os.stat_result]] → method StaticFiles.lookup_path(path: str) -> tuple[str, os.stat_result | None]
  • changed: constructor Jinja2Templates(directory: typing.Union[str, PathLike[typing.AnyStr], typing.Sequence[typing.Union[str, PathLike[typing.AnyStr]]]], *, context_processors: typing.Optional[typing.List[typing.Callable[[Request], typing.Dict[str, typing.Any]]]]=…, **env_options: typing.Any) -> None | (*, env: jinja2.Environment, context_processors: typing.Optional[typing.List[typing.Callable[[Request], t… → constructor Jinja2Templates(directory: str | PathLike[typing.AnyStr] | typing.Sequence[str | PathLike[typing.AnyStr]], *, context_processors: list[typing.Callable[[Request], dict[str, typing.Any]]] | None=…, **env_options: typing.Any) -> None | (*, env: jinja2.Environment, context_processors: list[typing.Callable[[Request], dict[str, typing.Any]]] | None=…) -> None
  • changed: method Jinja2Templates.TemplateResponse(request: Request, name: str, context: typing.Optional[typing.Dict[str, typing.Any]]=…, status_code: int=…, headers: typing.Optional[typing.Mapping[str, str]]=…, media_type: typing.Optional[str]=…, background: typing.Optional[BackgroundTask]=…) -> _TemplateResponse | (name: str, context: typing.Optional[typing.Dict[str, typing.Any]]=…, status_code: int=…, he… → method Jinja2Templates.TemplateResponse(request: Request, name: str, context: dict[str, typing.Any] | None=…, status_code: int=…, headers: typing.Mapping[str, str] | None=…, media_type: str | None=…, background: BackgroundTask | None=…) -> _TemplateResponse | (name: str, context: dict[str, typing.Any] | None=…, status_code: int=…, headers: typing.Mapping[str, str] | None=…, media_type: str | None…
  • changed: constructor TestClient(app: ASGIApp, base_url: str=…, raise_server_exceptions: bool=…, root_path: str=…, backend: str=…, backend_options: typing.Optional[typing.Dict[str, typing.Any]]=…, cookies: httpx._types.CookieTypes=…, headers: typing.Dict[str, str]=…, follow_redirects: bool=…) -> None → constructor TestClient(app: ASGIApp, base_url: str=…, raise_server_exceptions: bool=…, root_path: str=…, backend: typing.Literal['asyncio', 'trio']=…, backend_options: dict[str, typing.Any] | None=…, cookies: httpx._types.CookieTypes | None=…, headers: dict[str, str] | None=…, follow_redirects: bool=…) -> None
  • changed: field TestClient.portal: typing.Optional[anyio.abc.BlockingPortal] → field TestClient.portal: anyio.abc.BlockingPortal | None
  • changed: method TestClient.delete(url: httpx._types.URLTypes, *, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typing.Union[httpx._types.AuthTypes, httpx._client.UseClientDefault]=…, follow_redirects: typing.Optional[bool]=…, allow_redirects: typing.Optional[bool]=…, timeout: typing… → method TestClient.delete(url: httpx._types.URLTypes, *, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follow_redirects: bool | None=…, allow_redirects: bool | None=…, timeout: httpx._types.TimeoutTypes | httpx._client.UseClientDefault=…, extensi…
  • changed: method TestClient.get(url: httpx._types.URLTypes, *, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typing.Union[httpx._types.AuthTypes, httpx._client.UseClientDefault]=…, follow_redirects: typing.Optional[bool]=…, allow_redirects: typing.Optional[bool]=…, timeout: typing.Un… → method TestClient.get(url: httpx._types.URLTypes, *, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follow_redirects: bool | None=…, allow_redirects: bool | None=…, timeout: httpx._types.TimeoutTypes | httpx._client.UseClientDefault=…, extensions…
  • changed: method TestClient.head(url: httpx._types.URLTypes, *, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typing.Union[httpx._types.AuthTypes, httpx._client.UseClientDefault]=…, follow_redirects: typing.Optional[bool]=…, allow_redirects: typing.Optional[bool]=…, timeout: typing.U… → method TestClient.head(url: httpx._types.URLTypes, *, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follow_redirects: bool | None=…, allow_redirects: bool | None=…, timeout: httpx._types.TimeoutTypes | httpx._client.UseClientDefault=…, extension…
  • changed: method TestClient.options(url: httpx._types.URLTypes, *, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typing.Union[httpx._types.AuthTypes, httpx._client.UseClientDefault]=…, follow_redirects: typing.Optional[bool]=…, allow_redirects: typing.Optional[bool]=…, timeout: typin… → method TestClient.options(url: httpx._types.URLTypes, *, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follow_redirects: bool | None=…, allow_redirects: bool | None=…, timeout: httpx._types.TimeoutTypes | httpx._client.UseClientDefault=…, extens…
  • changed: method TestClient.patch(url: httpx._types.URLTypes, *, content: typing.Optional[httpx._types.RequestContent]=…, data: typing.Optional[_RequestData]=…, files: typing.Optional[httpx._types.RequestFiles]=…, json: typing.Any=…, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typi… → method TestClient.patch(url: httpx._types.URLTypes, *, content: httpx._types.RequestContent | None=…, data: _RequestData | None=…, files: httpx._types.RequestFiles | None=…, json: typing.Any=…, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follo…
  • changed: method TestClient.post(url: httpx._types.URLTypes, *, content: typing.Optional[httpx._types.RequestContent]=…, data: typing.Optional[_RequestData]=…, files: typing.Optional[httpx._types.RequestFiles]=…, json: typing.Any=…, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typin… → method TestClient.post(url: httpx._types.URLTypes, *, content: httpx._types.RequestContent | None=…, data: _RequestData | None=…, files: httpx._types.RequestFiles | None=…, json: typing.Any=…, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follow…
  • changed: method TestClient.put(url: httpx._types.URLTypes, *, content: typing.Optional[httpx._types.RequestContent]=…, data: typing.Optional[_RequestData]=…, files: typing.Optional[httpx._types.RequestFiles]=…, json: typing.Any=…, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes]=…, auth: typing… → method TestClient.put(url: httpx._types.URLTypes, *, content: httpx._types.RequestContent | None=…, data: _RequestData | None=…, files: httpx._types.RequestFiles | None=…, json: typing.Any=…, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientDefault=…, follow_…
  • changed: method TestClient.request(method: str, url: httpx._types.URLTypes, *, content: typing.Optional[httpx._types.RequestContent]=…, data: typing.Optional[_RequestData]=…, files: typing.Optional[httpx._types.RequestFiles]=…, json: typing.Any=…, params: typing.Optional[httpx._types.QueryParamTypes]=…, headers: typing.Optional[httpx._types.HeaderTypes]=…, cookies: typing.Optional[httpx._types.CookieTypes… → method TestClient.request(method: str, url: httpx._types.URLTypes, *, content: httpx._types.RequestContent | None=…, data: _RequestData | None=…, files: httpx._types.RequestFiles | None=…, json: typing.Any=…, params: httpx._types.QueryParamTypes | None=…, headers: httpx._types.HeaderTypes | None=…, cookies: httpx._types.CookieTypes | None=…, auth: httpx._types.AuthTypes | httpx._client.UseClientD…
  • changed: method TestClient.websocket_connect(url: str, subprotocols: typing.Sequence[str]=…, **kwargs: typing.Any) -> WebSocketTestSession → method TestClient.websocket_connect(url: str, subprotocols: typing.Sequence[str] | None=…, **kwargs: typing.Any) -> WebSocketTestSession
  • changed: method WebSocketTestSession.close(code: int=…, reason: typing.Union[str, None]=…) -> None → method WebSocketTestSession.close(code: int=…, reason: str | None=…) -> None
  • changed: method WebSocketTestSession.receive_json(mode: str=…) -> typing.Any → method WebSocketTestSession.receive_json(mode: typing.Literal['text', 'binary']=…) -> typing.Any
  • changed: method WebSocketTestSession.send_json(data: typing.Any, mode: str=…) -> None → method WebSocketTestSession.send_json(data: typing.Any, mode: typing.Literal['text', 'binary']=…) -> None
  • added: property WebSocketTestSession.should_close -> anyio.Event
  • changed: async method WebSocket.accept(subprotocol: typing.Optional[str]=…, headers: typing.Optional[typing.Iterable[typing.Tuple[bytes, bytes]]]=…) -> None → async method WebSocket.accept(subprotocol: str | None=…, headers: typing.Iterable[tuple[bytes, bytes]] | None=…) -> None
  • changed: async method WebSocket.close(code: int=…, reason: typing.Optional[str]=…) -> None → async method WebSocket.close(code: int=…, reason: str | None=…) -> None
  • changed: constructor WebSocketClose(code: int=…, reason: typing.Optional[str]=…) -> None → constructor WebSocketClose(code: int=…, reason: str | None=…) -> None