]> git.ipfire.org Git - thirdparty/starlette.git/commitdiff
Bump the python-packages group with 13 updates (#2632)
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sat, 27 Jul 2024 09:03:46 +0000 (03:03 -0600)
committerGitHub <noreply@github.com>
Sat, 27 Jul 2024 09:03:46 +0000 (03:03 -0600)
* Bump the python-packages group with 13 updates

Bumps the python-packages group with 13 updates:

| Package | From | To |
| --- | --- | --- |
| [anyio](https://github.com/agronholm/anyio) | `4.3.0` | `4.4.0` |
| [coverage](https://github.com/nedbat/coveragepy) | `7.4.3` | `7.5.4` |
| [importlib-metadata](https://github.com/python/importlib_metadata) | `7.0.1` | `8.0.0` |
| [mypy](https://github.com/python/mypy) | `1.8.0` | `1.10.1` |
| [ruff](https://github.com/astral-sh/ruff) | `0.1.15` | `0.5.0` |
| [typing-extensions](https://github.com/python/typing_extensions) | `4.10.0` | `4.12.2` |
| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20240311` |
| [pytest](https://github.com/pytest-dev/pytest) | `8.0.2` | `8.2.2` |
| [trio](https://github.com/python-trio/trio) | `0.24.0` | `0.25.1` |
| [mkdocs](https://github.com/mkdocs/mkdocs) | `1.5.3` | `1.6.0` |
| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.5.12` | `9.5.27` |
| [build](https://github.com/pypa/build) | `1.1.1` | `1.2.1` |
| [twine](https://github.com/pypa/twine) | `5.0.0` | `5.1.1` |

Updates `anyio` from 4.3.0 to 4.4.0
- [Release notes](https://github.com/agronholm/anyio/releases)
- [Changelog](https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst)
- [Commits](https://github.com/agronholm/anyio/compare/4.3.0...4.4.0)

Updates `coverage` from 7.4.3 to 7.5.4
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](https://github.com/nedbat/coveragepy/compare/7.4.3...7.5.4)

Updates `importlib-metadata` from 7.0.1 to 8.0.0
- [Release notes](https://github.com/python/importlib_metadata/releases)
- [Changelog](https://github.com/python/importlib_metadata/blob/main/NEWS.rst)
- [Commits](https://github.com/python/importlib_metadata/compare/v7.0.1...v8.0.0)

Updates `mypy` from 1.8.0 to 1.10.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.8.0...v1.10.1)

Updates `ruff` from 0.1.15 to 0.5.0
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.1.15...0.5.0)

Updates `typing-extensions` from 4.10.0 to 4.12.2
- [Release notes](https://github.com/python/typing_extensions/releases)
- [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/python/typing_extensions/compare/4.10.0...4.12.2)

Updates `types-pyyaml` from 6.0.12.12 to 6.0.12.20240311
- [Commits](https://github.com/python/typeshed/commits)

Updates `pytest` from 8.0.2 to 8.2.2
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/8.0.2...8.2.2)

Updates `trio` from 0.24.0 to 0.25.1
- [Release notes](https://github.com/python-trio/trio/releases)
- [Commits](https://github.com/python-trio/trio/compare/v0.24.0...v0.25.1)

Updates `mkdocs` from 1.5.3 to 1.6.0
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.3...1.6.0)

Updates `mkdocs-material` from 9.5.12 to 9.5.27
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.5.12...9.5.27)

Updates `build` from 1.1.1 to 1.2.1
- [Release notes](https://github.com/pypa/build/releases)
- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/build/compare/1.1.1...1.2.1)

Updates `twine` from 5.0.0 to 5.1.1
- [Release notes](https://github.com/pypa/twine/releases)
- [Changelog](https://github.com/pypa/twine/blob/main/docs/changelog.rst)
- [Commits](https://github.com/pypa/twine/compare/5.0.0...v5.1.1)

---
updated-dependencies:
- dependency-name: anyio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: importlib-metadata
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: python-packages
- dependency-name: mypy
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: ruff
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: typing-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: types-pyyaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: trio
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: mkdocs
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-packages
- dependency-name: build
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
- dependency-name: twine
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
* Add all changes needed for bump

* Ignore ResourceWarning

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
14 files changed:
pyproject.toml
requirements.txt
scripts/lint
starlette/_utils.py
starlette/config.py
starlette/middleware/__init__.py
starlette/responses.py
starlette/status.py
starlette/templating.py
tests/test__utils.py
tests/test_applications.py
tests/test_responses.py
tests/test_routing.py
tests/test_websockets.py

index 2fd7fb4822f680d9de2258c23456290309cf3736..b1271db8da94e7151e1ec04f4d4728ef282268a5 100644 (file)
@@ -51,6 +51,7 @@ path = "starlette/__init__.py"
 
 [tool.ruff.lint]
 select = ["E", "F", "I", "FA", "UP"]
+ignore = ["UP031"]
 
 [tool.ruff.lint.isort]
 combine-as-imports = true
@@ -78,6 +79,8 @@ filterwarnings = [
     "ignore: The `allow_redirects` argument is deprecated. Use `follow_redirects` instead.:DeprecationWarning",
     "ignore: 'cgi' is deprecated and slated for removal in Python 3.13:DeprecationWarning",
     "ignore: You seem to already have a custom sys.excepthook handler installed. I'll skip installing Trio's custom handler, but this means MultiErrors will not show full tracebacks.:RuntimeWarning",
+    # TODO: This warning appeared when we bumped anyio to 4.4.0.
+    "ignore: Unclosed .MemoryObject(Send|Receive)Stream.:ResourceWarning",
 ]
 
 [tool.coverage.run]
index e828ffeb9d6534605506de65a56ef51e0791b1ad..2e2e4f9c00c6d2de39e4eae1ea8e8995dff8a962 100644 (file)
@@ -2,25 +2,25 @@
 -e .[full]
 
 # TODO: We need to delete the following line when fixing the test suite for anyio 4.4.0.
-anyio==4.3.0
+anyio==4.4.0
 
 # Testing
-coverage==7.4.3
-importlib-metadata==7.0.1
-mypy==1.8.0
-ruff==0.1.15
-typing_extensions==4.10.0
+coverage==7.5.4
+importlib-metadata==8.0.0
+mypy==1.10.1
+ruff==0.5.0
+typing_extensions==4.12.2
 types-contextvars==2.4.7.3
-types-PyYAML==6.0.12.12
+types-PyYAML==6.0.12.20240311
 types-dataclasses==0.6.6
-pytest==8.0.2
-trio==0.24.0
+pytest==8.2.2
+trio==0.25.1
 
 # Documentation
-mkdocs==1.5.3
-mkdocs-material==9.5.12
+mkdocs==1.6.0
+mkdocs-material==9.5.27
 mkautodoc==0.2.0
 
 # Packaging
-build==1.1.1
-twine==5.0.0
+build==1.2.1
+twine==5.1.1
index 586aedfc3693fd178e8d0f827b0cd1911abdd1df..19dbc7db428e0d6656431b79e2ef33a379713606 100755 (executable)
@@ -9,4 +9,4 @@ export SOURCE_FILES="starlette tests"
 set -x
 
 ${PREFIX}ruff format $SOURCE_FILES
-${PREFIX}ruff --fix $SOURCE_FILES
+${PREFIX}ruff check --fix $SOURCE_FILES
index 42777c58e430215bb3cfed8cf27e286dda17f7cf..b6970542b8a978c1455fe9178fa640b4c6b994f2 100644 (file)
@@ -26,13 +26,11 @@ AwaitableCallable = typing.Callable[..., typing.Awaitable[T]]
 
 
 @typing.overload
-def is_async_callable(obj: AwaitableCallable[T]) -> TypeGuard[AwaitableCallable[T]]:
-    ...
+def is_async_callable(obj: AwaitableCallable[T]) -> TypeGuard[AwaitableCallable[T]]: ...
 
 
 @typing.overload
-def is_async_callable(obj: typing.Any) -> TypeGuard[AwaitableCallable[typing.Any]]:
-    ...
+def is_async_callable(obj: typing.Any) -> TypeGuard[AwaitableCallable[typing.Any]]: ...
 
 
 def is_async_callable(obj: typing.Any) -> typing.Any:
@@ -49,13 +47,11 @@ T_co = typing.TypeVar("T_co", covariant=True)
 
 class AwaitableOrContextManager(
     typing.Awaitable[T_co], typing.AsyncContextManager[T_co], typing.Protocol[T_co]
-):
-    ...
+): ...
 
 
 class SupportsAsyncClose(typing.Protocol):
-    async def close(self) -> None:
-        ...  # pragma: no cover
+    async def close(self) -> None: ...  # pragma: no cover
 
 
 SupportsAsyncCloseType = typing.TypeVar(
index 5b9813beac7397e09b993bc9d0dc959c85c0dc90..4c3dfe5b0194682d523d2583aaad952f65816748 100644 (file)
@@ -68,16 +68,13 @@ class Config:
                 self.file_values = self._read_file(env_file)
 
     @typing.overload
-    def __call__(self, key: str, *, default: None) -> str | None:
-        ...
+    def __call__(self, key: str, *, default: None) -> str | None: ...
 
     @typing.overload
-    def __call__(self, key: str, cast: type[T], default: T = ...) -> T:
-        ...
+    def __call__(self, key: str, cast: type[T], default: T = ...) -> T: ...
 
     @typing.overload
-    def __call__(self, key: str, cast: type[str] = ..., default: str = ...) -> str:
-        ...
+    def __call__(self, key: str, cast: type[str] = ..., default: str = ...) -> str: ...
 
     @typing.overload
     def __call__(
@@ -85,12 +82,12 @@ class Config:
         key: str,
         cast: typing.Callable[[typing.Any], T] = ...,
         default: typing.Any = ...,
-    ) -> T:
-        ...
+    ) -> T: ...
 
     @typing.overload
-    def __call__(self, key: str, cast: type[str] = ..., default: T = ...) -> T | str:
-        ...
+    def __call__(
+        self, key: str, cast: type[str] = ..., default: T = ...
+    ) -> T | str: ...
 
     def __call__(
         self,
index 3d0342dc361649a092593884223ce64ef7c0d389..d9e64f574e0d94768f2e142ff9e1b26e828b1db1 100644 (file)
@@ -14,11 +14,13 @@ P = ParamSpec("P")
 
 
 class _MiddlewareClass(Protocol[P]):
-    def __init__(self, app: ASGIApp, *args: P.args, **kwargs: P.kwargs) -> None:
-        ...  # pragma: no cover
+    def __init__(
+        self, app: ASGIApp, *args: P.args, **kwargs: P.kwargs
+    ) -> None: ...  # pragma: no cover
 
-    async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
-        ...  # pragma: no cover
+    async def __call__(
+        self, scope: Scope, receive: Receive, send: Send
+    ) -> None: ...  # pragma: no cover
 
 
 class Middleware:
index 1f41c23d4c3b895c91a9a5bfc518da8c1b69abaa..4f15404ca1bed7d3c231a1fcacc9ef04306cdba9 100644 (file)
@@ -299,12 +299,10 @@ class FileResponse(Response):
         if self.filename is not None:
             content_disposition_filename = quote(self.filename)
             if content_disposition_filename != self.filename:
-                content_disposition = "{}; filename*=utf-8''{}".format(
-                    content_disposition_type, content_disposition_filename
-                )
+                content_disposition = f"{content_disposition_type}; filename*=utf-8''{content_disposition_filename}"  # noqa: E501
             else:
-                content_disposition = '{}; filename="{}"'.format(
-                    content_disposition_type, self.filename
+                content_disposition = (
+                    f'{content_disposition_type}; filename="{self.filename}"'
                 )
             self.headers.setdefault("content-disposition", content_disposition)
         self.stat_result = stat_result
index 2cd5db575c70026f636fea842dfaac192bfaa342..93ae7a17c2d8913006663e50feb268fc03e19a03 100644 (file)
@@ -5,6 +5,7 @@ https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
 
 And RFC 2324 - https://tools.ietf.org/html/rfc2324
 """
+
 from __future__ import annotations
 
 import warnings
index 8e1737f61bb4e5a255aa4d7792d424a754df354d..aae2cbe24684f2fe9fe52853b31c16c5f3add3b2 100644 (file)
@@ -71,8 +71,7 @@ class Jinja2Templates:
         context_processors: list[typing.Callable[[Request], dict[str, typing.Any]]]
         | None = None,
         **env_options: typing.Any,
-    ) -> None:
-        ...
+    ) -> None: ...
 
     @typing.overload
     def __init__(
@@ -81,8 +80,7 @@ class Jinja2Templates:
         env: jinja2.Environment,
         context_processors: list[typing.Callable[[Request], dict[str, typing.Any]]]
         | None = None,
-    ) -> None:
-        ...
+    ) -> None: ...
 
     def __init__(
         self,
@@ -150,8 +148,7 @@ class Jinja2Templates:
         headers: typing.Mapping[str, str] | None = None,
         media_type: str | None = None,
         background: BackgroundTask | None = None,
-    ) -> _TemplateResponse:
-        ...
+    ) -> _TemplateResponse: ...
 
     @typing.overload
     def TemplateResponse(
index 06fece58b5a900682cd41a9fb74a84f4fc6f0656..2ecf4748318a680f44576850148427cc4e6282df 100644 (file)
@@ -5,22 +5,18 @@ from starlette._utils import is_async_callable
 
 
 def test_async_func() -> None:
-    async def async_func() -> None:
-        ...  # pragma: no cover
+    async def async_func() -> None: ...  # pragma: no cover
 
-    def func() -> None:
-        ...  # pragma: no cover
+    def func() -> None: ...  # pragma: no cover
 
     assert is_async_callable(async_func)
     assert not is_async_callable(func)
 
 
 def test_async_partial() -> None:
-    async def async_func(a: Any, b: Any) -> None:
-        ...  # pragma: no cover
+    async def async_func(a: Any, b: Any) -> None: ...  # pragma: no cover
 
-    def func(a: Any, b: Any) -> None:
-        ...  # pragma: no cover
+    def func(a: Any, b: Any) -> None: ...  # pragma: no cover
 
     partial = functools.partial(async_func, 1)
     assert is_async_callable(partial)
@@ -31,12 +27,10 @@ def test_async_partial() -> None:
 
 def test_async_method() -> None:
     class Async:
-        async def method(self) -> None:
-            ...  # pragma: no cover
+        async def method(self) -> None: ...  # pragma: no cover
 
     class Sync:
-        def method(self) -> None:
-            ...  # pragma: no cover
+        def method(self) -> None: ...  # pragma: no cover
 
     assert is_async_callable(Async().method)
     assert not is_async_callable(Sync().method)
@@ -44,12 +38,10 @@ def test_async_method() -> None:
 
 def test_async_object_call() -> None:
     class Async:
-        async def __call__(self) -> None:
-            ...  # pragma: no cover
+        async def __call__(self) -> None: ...  # pragma: no cover
 
     class Sync:
-        def __call__(self) -> None:
-            ...  # pragma: no cover
+        def __call__(self) -> None: ...  # pragma: no cover
 
     assert is_async_callable(Async())
     assert not is_async_callable(Sync())
@@ -61,16 +53,14 @@ def test_async_partial_object_call() -> None:
             self,
             a: Any,
             b: Any,
-        ) -> None:
-            ...  # pragma: no cover
+        ) -> None: ...  # pragma: no cover
 
     class Sync:
         def __call__(
             self,
             a: Any,
             b: Any,
-        ) -> None:
-            ...  # pragma: no cover
+        ) -> None: ...  # pragma: no cover
 
     partial = functools.partial(Async(), 1)
     assert is_async_callable(partial)
@@ -83,8 +73,7 @@ def test_async_nested_partial() -> None:
     async def async_func(
         a: Any,
         b: Any,
-    ) -> None:
-        ...  # pragma: no cover
+    ) -> None: ...  # pragma: no cover
 
     partial = functools.partial(async_func, b=2)
     nested_partial = functools.partial(partial, a=1)
index 5b6c9d54564c16d422d29be7d70a1c16be805470..af3cdda6cd579cb1e571aa4e13699329d3a2f60f 100644 (file)
@@ -463,8 +463,7 @@ def test_decorator_deprecations() -> None:
 
         async def middleware(
             request: Request, call_next: RequestResponseEndpoint
-        ) -> None:
-            ...  # pragma: no cover
+        ) -> None: ...  # pragma: no cover
 
         app.middleware("http")(middleware)
         assert len(record) == 1
@@ -494,8 +493,7 @@ def test_decorator_deprecations() -> None:
         )
     ) as record:
 
-        async def startup() -> None:
-            ...  # pragma: no cover
+        async def startup() -> None: ...  # pragma: no cover
 
         app.on_event("startup")(startup)
         assert len(record) == 1
index c134cbda513ee4ee149d108dffce33d81e70e388..f05529dd7dcc34fe4c92debe098e3bcfb47b1603 100644 (file)
@@ -510,17 +510,17 @@ def test_streaming_response_known_size(test_client_factory: TestClientFactory) -
 
 
 def test_response_memoryview(test_client_factory: TestClientFactory) -> None:
-    app = Response(content=memoryview(b"\xC0"))
+    app = Response(content=memoryview(b"\xc0"))
     client: TestClient = test_client_factory(app)
     response = client.get("/")
-    assert response.content == b"\xC0"
+    assert response.content == b"\xc0"
 
 
 def test_streaming_response_memoryview(test_client_factory: TestClientFactory) -> None:
-    app = StreamingResponse(content=iter([memoryview(b"\xC0"), memoryview(b"\xF5")]))
+    app = StreamingResponse(content=iter([memoryview(b"\xc0"), memoryview(b"\xf5")]))
     client: TestClient = test_client_factory(app)
     response = client.get("/")
-    assert response.content == b"\xC0\xF5"
+    assert response.content == b"\xc0\xf5"
 
 
 @pytest.mark.anyio
index b75fc47f02bdde12380fc0d6a87bcb22427aa161..03c31c67f4cddc0f127e7929357abca0a2b78ff4 100644 (file)
@@ -909,19 +909,15 @@ def test_duplicated_param_names() -> None:
 
 
 class Endpoint:
-    async def my_method(self, request: Request) -> None:
-        ...  # pragma: no cover
+    async def my_method(self, request: Request) -> None: ...  # pragma: no cover
 
     @classmethod
-    async def my_classmethod(cls, request: Request) -> None:
-        ...  # pragma: no cover
+    async def my_classmethod(cls, request: Request) -> None: ...  # pragma: no cover
 
     @staticmethod
-    async def my_staticmethod(request: Request) -> None:
-        ...  # pragma: no cover
+    async def my_staticmethod(request: Request) -> None: ...  # pragma: no cover
 
-    def __call__(self, request: Request) -> None:
-        ...  # pragma: no cover
+    def __call__(self, request: Request) -> None: ...  # pragma: no cover
 
 
 @pytest.mark.parametrize(
@@ -1254,8 +1250,7 @@ def test_decorator_deprecations() -> None:
 
     with pytest.deprecated_call():
 
-        async def startup() -> None:
-            ...  # pragma: nocover
+        async def startup() -> None: ...  # pragma: nocover
 
         router.on_event("startup")(startup)
 
index 854c269143de5266eb00db3ce0bf5ae7b6e611f7..95ffbdbe758be6d49a7ca278fb37bea1d0dc239e 100644 (file)
@@ -492,8 +492,7 @@ def test_websocket_scope_interface() -> None:
     async def mock_receive() -> Message:  # type: ignore
         ...  # pragma: no cover
 
-    async def mock_send(message: Message) -> None:
-        ...  # pragma: no cover
+    async def mock_send(message: Message) -> None: ...  # pragma: no cover
 
     websocket = WebSocket(
         {"type": "websocket", "path": "/abc/", "headers": []},