mirror of https://github.com/encode/starlette.git
Bump the python-packages group with 13 updates (#2632)
* 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>
This commit is contained in:
parent
07427f8647
commit
296cab922a
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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": []},
|
||||
|
|
Loading…
Reference in New Issue