Skip to content

Update dependency starlette to v1 [SECURITY] - #162

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/pypi-starlette-vulnerability
Open

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/pypi-starlette-vulnerability

Conversation

@renovate

@renovate renovate Bot commented May 17, 2023 •

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
starlette (changelog) ^0.22.0 → ^1.0.0 age confidence
starlette (changelog) ==0.25.0 → ==1.3.1 age confidence

MultipartParser denial of service with too many fields or files

CVE-2023-30798 / GHSA-74m5-2c7w-9w3x

More information

Details

Impact

The MultipartParser using the package python-multipart accepts an unlimited number of multipart parts (form fields or files).

Processing too many parts results in high CPU usage and high memory usage, eventually leading to an OOM process kill.

This can be triggered by sending too many small form fields with no content, or too many empty files.

For this to take effect application code has to:

  • Have python-multipart installed and
  • call request.form()
    • or via another framework like FastAPI, using form field parameters or UploadFile parameters, which in turn calls request.form().
Patches

The vulnerability is solved in Starlette 0.25.0 by making the maximum fields and files customizable and with a sensible default (1000).

Applications will be secure by just upgrading their Starlette version to 0.25.0 (or FastAPI to 0.92.0).

If application code needs to customize the new max field and file number, there are new request.form() parameters (with the default values):

  • max_files=1000
  • max_fields=1000
Workarounds

Applications that don't install python-multipart or that don't use form fields are safe.

In older versions, it's also possible to instead of calling request.form() call request.stream() and parse the form data in internal code.

In most cases, the best solution is to upgrade the Starlette version.

References

This was reported in private by @​das7pad via internal email. He also coordinated the fix across multiple frameworks and parsers.

The details about how multipart/form-data is structured and parsed are in the RFC 7578.

Severity

  • CVSS Score: 8.7 / 10 (High)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette has Path Traversal vulnerability in StaticFiles

CVE-2023-29159 / GHSA-v5gw-mw7f-84px

More information

Details

Summary

When using StaticFiles, if there's a file or directory that starts with the same name as the StaticFiles directory, that file or directory is also exposed via StaticFiles which is a path traversal vulnerability.

Details

The root cause of this issue is the usage of os.path.commonprefix():
https://github.com/encode/starlette/blob/4bab981d9e870f6cee1bd4cd59b87ddaf355b2dc/starlette/staticfiles.py#L172-L174

As stated in the Python documentation (https://docs.python.org/3/library/os.path.html#os.path.commonprefix) this function returns the longest prefix common to paths.

When passing a path like /static/../static1.txt, os.path.commonprefix([full_path, directory]) returns ./static which is the common part of ./static1.txt and ./static, It refers to /static/../static1.txt because it is considered in the staticfiles directory. As a result, it becomes possible to view files that should not be open to the public.

The solution is to use os.path.commonpath as the Python documentation explains that os.path.commonprefix works a character at a time, it does not treat the arguments as paths.

PoC

In order to reproduce the issue, you need to create the following structure:

├── static
│   ├── index.html
├── static_disallow
│   ├── index.html
└── static1.txt

And run the Starlette app with:

import uvicorn
from starlette.applications import Starlette
from starlette.routing import Mount
from starlette.staticfiles import StaticFiles

routes = [
    Mount("/static", app=StaticFiles(directory="static", html=True), name="static"),
]

app = Starlette(routes=routes)

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

And running the commands:

curl --path-as-is 'localhost:8000/static/../static_disallow/'
curl --path-as-is 'localhost:8000/static/../static1.txt'

The static1.txt and the directory static_disallow are exposed.

Impact

Confidentiality is breached: An attacker may obtain files that should not be open to the public.

Credits

Security researcher Masashi Yamane of LAC Co., Ltd reported this vulnerability to JPCERT/CC Vulnerability Coordination Group and they contacted us to coordinate a patch for the security issue.

Severity

  • CVSS Score: 6.3 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette Denial of service (DoS) via multipart/form-data

CVE-2024-47874 / GHSA-f96h-pmfr-66vw

More information

Details

Summary

Starlette treats multipart/form-data parts without a filename as text form fields and buffers those in byte strings with no size limit. This allows an attacker to upload arbitrary large form fields and cause Starlette to both slow down significantly due to excessive memory allocations and copy operations, and also consume more and more memory until the server starts swapping and grinds to a halt, or the OS terminates the server process with an OOM error. Uploading multiple such requests in parallel may be enough to render a service practically unusable, even if reasonable request size limits are enforced by a reverse proxy in front of Starlette.

PoC
from starlette.applications import Starlette
from starlette.routing import Route

async def poc(request):
    async with request.form():
        pass

app = Starlette(routes=[
    Route('/', poc, methods=["POST"]),
])
curl http://localhost:8000 -F 'big=</dev/urandom'
Impact

This Denial of service (DoS) vulnerability affects all applications built with Starlette (or FastAPI) accepting form requests.

Severity

  • CVSS Score: 8.7 / 10 (High)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette has possible denial-of-service vector when parsing large files in multipart forms

CVE-2025-54121 / GHSA-2c2j-9gv5-cj73

More information

Details

Summary

When parsing a multi-part form with large files (greater than the default max spool size) starlette will block the main thread to roll the file over to disk. This blocks the event thread which means we can't accept new connections.

Details

Please see this discussion for details: https://github.com/encode/starlette/discussions/2927#discussioncomment-13721403. In summary the following UploadFile code (copied from here) has a minor bug. Instead of just checking for self._in_memory we should also check if the additional bytes will cause a rollover.

    @property
    def _in_memory(self) -> bool:
        # check for SpooledTemporaryFile._rolled
        rolled_to_disk = getattr(self.file, "_rolled", True)
        return not rolled_to_disk

    async def write(self, data: bytes) -> None:
        if self.size is not None:
            self.size += len(data)

        if self._in_memory:
            self.file.write(data)
        else:
            await run_in_threadpool(self.file.write, data)

I have already created a PR which fixes the problem: https://github.com/encode/starlette/pull/2962

PoC

See the discussion here for steps on how to reproduce.

Impact

To be honest, very low and not many users will be impacted. Parsing large forms is already CPU intensive so the additional IO block doesn't slow down starlette that much on systems with modern HDDs/SSDs. If someone is running on tape they might see a greater impact.

Severity

  • CVSS Score: 5.3 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette has missing Host header validation that poisons request.url.path, bypassing path-based security checks

CVE-2026-48710 / GHSA-86qp-5c8j-p5mr

More information

Details

Summary

In affected versions, the HTTP Host request header was not validated before being used to reconstruct request.url. Because the routing algorithm relies on the raw HTTP path while request.url is rebuilt from the Host header, a malformed header could make request.url.path differ from the path that was actually requested. Middleware and endpoints that apply security restrictions based on request.url (rather than the raw scope path) could therefore be bypassed.

Details

When a client requests http://example.com/foo, it sends:

GET /foo HTTP/1.1
Host: example.com

Affected versions reconstructed the URL by concatenating http://{host}{path} and re-parsing the result. The Host value is only valid as a uri-host [ ":" port ] per RFC 9112 §3.2, where uri-host follows the restricted host grammar of RFC 3986 §3.2.2. When it contains characters outside that grammar - notably /, ?, or # - those characters move the path/query/fragment boundaries during re-parsing, so the parsed request.url.path no longer matches the path the server actually received. For example:

GET /foo HTTP/1.1
Host: example.com/abc?bar=

reconstructs to http://example.com/abc?bar=/foo, whose parsed path is /abc - even though routing used the real path /foo. The router still dispatches to /foo and the endpoint executes, but any middleware or code that reads request.url.path sees /abc, so path-based authorization checks can be bypassed.

Impact

Any application running an affected version that relies on request.url (or request.url.path) for security-sensitive decisions is affected. The most common case is middleware that gates access to certain path prefixes based on request.url.path. Deployments fronted by a proxy or load balancer are mitigated only if that proxy rejects or normalizes the malformed Host header before forwarding and the application does not trust attacker-controlled host headers (e.g. X-Forwarded-Host) elsewhere.

Mitigation

Upgrade to a patched version, which validates the Host header against the grammar of RFC 9112 §3.2 / RFC 3986 §3.2.2 when constructing request.url and falls back to scope["server"] for malformed values.

Severity

  • CVSS Score: 6.5 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette: Arbitrary HTTP method dispatched to HTTPEndpoint attributes via getattr

CVE-2026-48817 / GHSA-x746-7m8f-x49c

More information

Details

Summary

When dispatching a request, HTTPEndpoint selects the handler by lowercasing the HTTP method and looking it up as an attribute with getattr, without restricting the lookup to a known set of HTTP verbs.

When an HTTPEndpoint subclass is registered through Route(...) without an explicit methods= argument, the route does not constrain the method and every method reaches the endpoint. If a non-standard HTTP method whose lowercased name matches an attribute on the endpoint subclass reaches the endpoint, that attribute is invoked as if it were a request handler. An attacker can use this to reach methods that were never meant to be HTTP handlers, such as internal helpers, without the authorization checks applied by the intended public handler.

Details

HTTPEndpoint uses the client-supplied method name to resolve an instance attribute, without validating it against the set of HTTP verbs the endpoint supports. A method such as _DO_DELETE therefore resolves an attribute like _do_delete and invokes it. Non-standard methods are valid RFC 9110 token methods, so an endpoint must not treat the method name as a trusted attribute selector.

Impact

An application is affected when all of the following hold:

  • It defines an HTTPEndpoint subclass and registers it via Route(...) without an explicit methods= argument.
  • The subclass defines additional methods whose names match a non-standard HTTP-method token shape and that accept a single request argument and return a response.

This also affects frameworks built on Starlette, like FastAPI.

Mitigation

Register HTTPEndpoint subclasses with an explicit methods= argument on the Route, listing only the HTTP verbs the endpoint supports. The route then rejects any other method with 405 Method Not Allowed before it reaches the endpoint, so non-standard methods cannot resolve an attribute.

Severity

  • CVSS Score: 5.3 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows

CVE-2026-48818 / GHSA-wqp7-x3pw-xc5r

More information

Details

Summary

When serving static files on Windows, StaticFiles resolves the requested path with os.path.realpath. If a UNC path (such as \\attacker.com\share) reaches the resolver, realpath causes the process to open a connection to the remote host over SMB (port 445). This is a server-side request forgery (SSRF) that leaks the service account's NTLMv2 credentials to the attacker-controlled host, which can then be cracked offline or relayed to other hosts.

Details

StaticFiles.lookup_path() joins the requested path onto the served directory and calls os.path.realpath on the result before checking containment with os.path.commonpath. On Windows, a UNC path is absolute, so os.path.join discards the served directory and realpath resolves the bare UNC path, triggering the outbound SMB connection and NTLM authentication before the containment check rejects the path. The HTTP response is a benign 404, but the credential disclosure has already happened. POSIX systems are not affected.

This only affects the default configuration (follow_symlink=False), which uses os.path.realpath. The follow_symlink=True branch uses os.path.abspath, which performs no I/O.

Impact

Applications running on Windows that serve files with StaticFiles (directly, or via a framework built on Starlette such as FastAPI) in the default configuration are affected. StaticFiles is typically unauthenticated, so any client can trigger the SMB connection and leak the service account's NTLMv2 hash. A secondary impact is discovering internal hosts reachable over SMB by timing responses for valid versus invalid addresses.

Mitigation

Applications not running on Windows are not affected. On Windows, serving static files through a dedicated web server (such as nginx or IIS) instead of StaticFiles avoids the issue. Blocking outbound SMB (port 445) from the application host prevents the credential disclosure even if a UNC path is resolved.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette: Unvalidated request path concatenated into authority poisons request.url.hostname

CVE-2026-54282 / GHSA-jp82-jpqv-5vv3

More information

Details

Summary

In affected versions, the HTTP request path is not validated before being used to reconstruct request.url. Because request.url is rebuilt by concatenating {scheme}://{host}{path} and re-parsing the result, a path that does not begin with / (for example @google.com) moves the authority boundary during re-parsing, so request.url.hostname and request.url.netloc become attacker-controlled. Code that reads request.url.hostname (rather than the Host header or scope) can therefore be misled into trusting an attacker-supplied host.

Details

When a client requests a path that does not start with /:

GET @google.com HTTP/1.1
Host: localhost

affected versions reconstruct the URL as http://localhost@google.com. Per RFC 3986 §3.2.1, the substring before @ in the authority is userinfo, so re-parsing yields username = "localhost" and hostname = "google.com", with an empty path:

request.url          == "http://localhost@google.com"
request.url.hostname == "google.com"
request.url.path     == ""

The root cause is that the path is concatenated directly after the host without a separating /, and without validating that it begins with one. Only the Host header was validated when constructing request.url; the path was not.

This requires an ASGI server that forwards a request-target lacking a leading / into scope["path"].

Impact

Any application running an affected version that uses request.url, request.url.netloc, or request.url.hostname for a security-sensitive decision (host-based authorization, redirect/callback base, SSRF target, cache key, audit log) may be affected, when no fronting proxy or load balancer rejects the malformed request-target first.

Note that this is less exploitable than GHSA-86qp-5c8j-p5mr: there, the poison is carried in the Host header, so the real path still routes to a valid endpoint while request.url.path lies. Here, the poison must be carried in the path itself, and that path (@google.com) does not match any registered route, so routing returns 404 and no endpoint handler runs. The exposure is limited to code that reads request.url before routing - notably middleware - or in 404/exception handlers.

Mitigation

Upgrade to a patched version, which prevents the request path from crossing into the URL authority. The request above instead yields http://localhost/@google.com with request.url.hostname == "localhost".

Severity

  • CVSS Score: 3.7 / 10 (Low)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS

CVE-2026-54283 / GHSA-82w8-qh3p-5jfq

More information

Details

Summary

request.form() accepts max_fields and max_part_size to bound resource consumption while parsing form data. These limits are enforced for multipart/form-data, but silently ignored for application/x-www-form-urlencoded. An unauthenticated attacker can therefore send a urlencoded body with an arbitrarily large number of fields or an arbitrarily large field, even when the application configured limits it believed would apply.

Details

request.form() dispatches to a different parser depending on the Content-Type. For multipart/form-data the max_files, max_fields, and max_part_size limits are forwarded to the parser, but for application/x-www-form-urlencoded the parser is constructed without them. It has no max_fields or max_part_size parameter to receive them, and it appends every field with no count check and accumulates each field's name and value with no size check. The configured limits are therefore both unreachable and unenforced for url-encoded bodies.

Because the url-encoded parser does its work synchronously between stream reads, the two attack shapes have different effects:

  • Field count drives CPU and event-loop blocking. A body of ~1,000,000 fields (a sub-10MB payload such as f0=v&f1=v&...) blocks the worker's event loop for several seconds while parsing, during which the worker serves no other request.
  • Field size drives memory. A single large field value (e.g. a 50MB value) is buffered in full to build the FormData, forcing memory allocation proportional to the request body.

The equivalent multipart/form-data request is correctly rejected with 400 Too many fields / 400 Field exceeded maximum size.

Impact

This Denial of service (DoS) vulnerability affects all applications built with Starlette (or FastAPI) that call request.form() on application/x-www-form-urlencoded requests. A single request with a very large number of fields blocks the event loop for several seconds, and a single request with a very large field forces unbounded memory allocation; in either case, parallel requests can render the service unusable. A reverse proxy that enforces a request body size limit reduces but does not eliminate the exposure, since a sub-10MB body is already enough to block the event loop.

Mitigation

Upgrade to a patched version, which forwards max_fields and max_part_size to the url-encoded parser and enforces them while parsing, raising before the oversized field or excess fields are accumulated. The defaults match multipart/form-data (max_fields=1000, max_part_size=1MB) and can be customized via request.form(max_fields=..., max_part_size=...).

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

Kludex/starlette (starlette)

v1.3.1: Version 1.3.1

Compare Source

What's Changed

Full Changelog: Kludex/starlette@1.3.0...1.3.1

v1.3.0: Version 1.3.0

Compare Source

What's Changed

New Contributors

Full Changelog: Kludex/starlette@1.2.1...1.3.0

v1.2.1: Version 1.2.1

Compare Source

What's Changed
New Contributors

Full Changelog: Kludex/starlette@1.2.0...1.2.1

v1.2.0: Version 1.2.0

Compare Source

What's Changed

Full Changelog: Kludex/starlette@1.1.0...1.2.0

v1.1.0: Version 1.1.0

Compare Source

What's Changed

New Contributors

Full Changelog: Kludex/starlette@1.0.1...1.1.0

v1.0.1: Version 1.0.1

Compare Source

What's Changed

Full Changelog: Kludex/starlette@1.0.0...1.0.1

v1.0.0: Version 1.0.0

Compare Source

Starlette 1.0 is here! 🎉

After nearly eight years since its creation, Starlette has reached its first stable release.

A special thank you to @​lovelydinosaur, the creator of Starlette, Uvicorn, HTTPX and MkDocs, whose work helped to lay the foundation for the modern async Python ecosystem. 🙏

Thank you to @​adriangb, @​graingert, @​agronholm, @​florimondmanca, @​aminalaee, @​tiangolo, @​alex-oleshkevich, @​abersheeran, and @​uSpike for helping make Starlette what it is today. And to all my sponsors - especially @​tiangolo, @​huggingface, and @​elevenlabs - thank you for your support!

Thank you to all 290+ contributors who have shaped Starlette over the years! ❤️

Read more on the blog post.

Check out the full release notes at https://www.starlette.io/release-notes/#​100-march-22-2026


Full Changelog: Kludex/starlette@1.0.0rc1...1.0.0

v0.52.1: Version 0.52.1

Compare Source

What's Changed


Full Changelog: Kludex/starlette@0.52.0...0.52.1

v0.52.0: Version 0.52.0

Compare Source

In this release, State can be accessed using dictionary-style syntax for improved type safety (#​3036).

from collections.abc import AsyncIterator
from contextlib import asynccontextmanager
from typing import TypedDict

import httpx

from starlette.applications import Starlette
from starlette.requests import Request

class State(TypedDict):
    http_client: httpx.AsyncClient

@asynccontextmanager
async def lifespan(app: Starlette) -> AsyncIterator[State]:
    async with httpx.AsyncClient() as client:
        yield {"http_client": client}

async def homepage(request: Request[State]):
    client = request.state["http_client"]
    # If you run the below line with mypy or pyright, it will reveal the correct type.
    reveal_type(client)  # Revealed type is 'httpx.AsyncClient'

See Accessing State for more details.


Full Changelog: Kludex/starlette@0.51.0...0.52.0

v0.51.0: Version 0.51.0

Compare Source

Added

  • Add allow_private_network in CORSMiddleware #​3065.

Changed

  • Increase warning stacklevel on DeprecationWarning for wsgi module #​3082.

New Contributors

Full Changelog: Kludex/starlette@0.50.0...0.51.0

v0.50.0: Version 0.50.0

Compare Source

Removed


Full Changelog: Kludex/starlette@0.49.3...0.50.0

v0.49.3: Version 0.49.3

Compare Source

Fixed

  • Relax strictness on Middleware type #​3059.

Full Changelog: Kludex/starlette@0.49.2...0.49.3

v0.49.2: Version 0.49.2

Compare Source

Fixed

  • Ignore if-modified-since header if if-none-match is present in StaticFiles #​3044.

Full Changelog: Kludex/starlette@0.49.1...0.49.2

v0.49.1: Version 0.49.1

Compare Source

This release fixes a security vulnerability in the parsing logic of the Range header in FileResponse.

You can view the full security advisory: GHSA-7f5h-v6xp-fcq8

Fixed


Full Changelog: Kludex/starlette@0.49.0...0.49.1

v0.49.0: Version 0.49.0

Compare Source

Added

  • Add encoding parameter to Config class #​2996.
  • Support multiple cookie headers in Request.cookies #​3029.
  • Use Literal type for WebSocketEndpoint encoding values #​3027.

Changed

  • Do not pollute exception context in Middleware when using BaseHTTPMiddleware #​2976.

New Contributors

Full Changelog: Kludex/starlette@0.48.0...0.49.0

v0.48.0: Version 0.48.0

Compare Source

Added

  • Add official Python 3.14 support #​3013.

Changed


New Contributors

Full Changelog: Kludex/starlette@0.47.3...0.48.0

v0.47.3: Version 0.47.3

Compare Source

Fixed


New Contributors

Full Changelog: Kludex/starlette@0.47.2...0.47.3

v0.47.2

Compare Source

Fixed

  • Make UploadFile check for future rollover #​2962.

New Contributors

Full Changelog: Kludex/starlette@0.47.1...0.47.2

v0.47.1: Version 0.47.1

Compare Source

Fixed

  • Use Self in TestClient.__enter__ #​2951
  • Allow async exception handlers to type-check #​2949

Full Changelog: Kludex/starlette@0.47.0...0.47.1

v0.47.0: Version 0.47.0

Compare Source

Added

  • Add support for ASGI pathsend extension #​2671.
  • Add partitioned attribute to Response.set_cookie #​2501.

Changed

  • Change methods parameter type from list[str] to Collection[str] #​2903.
  • Replace import typing by from typing import ... in the whole codebase #​2867.

Fixed

  • Mark ExceptionMiddleware.http_exception as async to prevent thread creation #​2922.

New Contributors

Full Changelog: Kludex/starlette@0.46.2...0.47.0

v0.46.2: Version 0.46.2

Compare Source

What's Changed

New Contributors

Full Changelog: Kludex/starlette@0.46.1...0.46.2

v0.46.1: Version 0.46.1

Compare Source

Fixed

  • Allow relative directory path when follow_symlinks=True #​2896.

Full Changelog: Kludex/starlette@0.46.0...0.46.1

v0.46.0: Version 0.46.0

Compare Source

Added

  • GZipMiddleware: Make sure Vary header is always added if a response can be compressed #​2865.

Fixed

  • Raise exception from background task on BaseHTTPMiddleware #​2812.
  • GZipMiddleware: Don't compress on server sent events #​2871.

Changed

  • MultiPartParser: Rename max_file_size to spool_max_size #​2780.

Deprecated

  • Add deprecated warning to TestClient(timeout=...) #​2840.

New Contributors

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot changed the title Update dependency starlette to v0.27.0 [SECURITY] chore(deps): update dependency starlette to v0.27.0 [security] Jan 14, 2024
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.27.0 [security] chore(deps): update dependency starlette to v0.36.2 [security] Feb 5, 2024
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 10677d2 to f5b4222 Compare February 5, 2024 18:30
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from f5b4222 to 769dd8e Compare February 17, 2024 00:08
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.36.2 [security] chore(deps): update dependency starlette to v0.27.0 [security] Feb 17, 2024
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 769dd8e to 11a39e4 Compare February 17, 2024 04:26
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.27.0 [security] chore(deps): update dependency starlette to v0.36.2 [security] Feb 17, 2024
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 11a39e4 to b243571 Compare August 6, 2024 07:01
@renovate

renovate Bot commented Aug 6, 2024 •

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: poetry.lock

The current project's Python requirement (>=3.7,<4.0) is not compatible with some of the required packages Python requirement:
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10
  - starlette requires Python >=3.10, so it will not be satisfied for Python >=3.7,<3.10

Because no versions of starlette match >1.0.0,<1.0.1 || >1.0.1,<1.1.0 || >1.1.0,<1.2.0 || >1.2.0,<1.2.1 || >1.2.1,<1.3.0 || >1.3.0,<1.3.1 || >1.3.1,<1.4.0 || >1.4.0,<1.4.1 || >1.4.1,<1.5.0 || >1.5.0,<1.5.1 || >1.5.1,<1.6.0 || >1.6.0,<1.7.0 || >1.7.0,<2.0.0
 and starlette (1.0.0) requires Python >=3.10, starlette is forbidden.
And because starlette (1.0.1) requires Python >=3.10, starlette is forbidden.
And because starlette (1.1.0) requires Python >=3.10
 and starlette (1.2.0) requires Python >=3.10, starlette is forbidden.
And because starlette (1.2.1) requires Python >=3.10
 and starlette (1.3.0) requires Python >=3.10, starlette is forbidden.
And because starlette (1.3.1) requires Python >=3.10
 and starlette (1.4.0) requires Python >=3.10, starlette is forbidden.
And because starlette (1.4.1) requires Python >=3.10
 and starlette (1.5.0) requires Python >=3.10, starlette is forbidden.
And because starlette (1.5.1) requires Python >=3.10
 and starlette (1.6.0) requires Python >=3.10, starlette is forbidden.
So, because starlette (1.7.0) requires Python >=3.10
 and slowapi depends on starlette (^1.0.0), version solving failed.

  • Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties
    
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"
    For starlette, a possible solution would be to set the `python` property to ">=3.10,<4.0"

    https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies,
    https://python-poetry.org/docs/dependency-specification/#using-environment-markers

@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from b243571 to 48b6690 Compare September 23, 2024 23:19
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.36.2 [security] chore(deps): update dependency starlette to v0.27.0 [security] Sep 23, 2024
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 48b6690 to 4f0fcd5 Compare October 15, 2024 18:51
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.27.0 [security] chore(deps): update dependency starlette to v0.40.0 [security] Oct 15, 2024
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 4f0fcd5 to 03b8d70 Compare July 22, 2025 01:36
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.40.0 [security] chore(deps): update dependency starlette to v0.47.2 [security] Jul 22, 2025
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 03b8d70 to dae75b2 Compare August 10, 2025 12:24
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.47.2 [security] chore(deps): update dependency starlette to v0.47.2 [security] - autoclosed Mar 27, 2026
@renovate renovate Bot closed this Mar 27, 2026
@renovate
renovate Bot deleted the renovate/pypi-starlette-vulnerability branch March 27, 2026 01:30
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.47.2 [security] - autoclosed chore(deps): update dependency starlette to v0.47.2 [security] Mar 30, 2026
@renovate renovate Bot reopened this Mar 30, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch 2 times, most recently from dae75b2 to 4dd97b5 Compare March 30, 2026 18:11
@renovate renovate Bot changed the title chore(deps): update dependency starlette to v0.47.2 [security] Update dependency starlette to v0.47.2 [SECURITY] Apr 8, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 4dd97b5 to dc7a9c9 Compare June 4, 2026 14:58
@renovate renovate Bot changed the title Update dependency starlette to v0.47.2 [SECURITY] Update dependency starlette to v1 [SECURITY] Jun 4, 2026
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from dc7a9c9 to 96bc25c Compare July 17, 2026 00:06
@renovate
renovate Bot force-pushed the renovate/pypi-starlette-vulnerability branch from 96bc25c to e91ef49 Compare August 26, 2026 19:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants