Skip to content

chore(deps): bump the python-minor-and-patch group with 21 updates - #8

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/python-minor-and-patch-640162a580
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/python-minor-and-patch-640162a580

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 19, 2026 •

Copy link
Copy Markdown

Bumps the python-minor-and-patch group with 21 updates:

Package From To
aiohttp 3.14.3 3.14.5
azure-identity 1.25.0 1.26.0
boto3 1.43.78 1.43.114
gitpython 3.1.62 3.2.1
starlette 1.6.0 1.8.0
pyjwt 2.13.0 2.15.1
python-gitlab 8.3.0 8.6.0
starlette-context 0.3.6 0.5.1
uvicorn 0.52.4 0.54.0
a2a-sdk[http-server] 1.0.3 1.2.2
pydantic 2.13.3 2.14.1
pydantic-settings 2.14.2 2.16.0
prometheus-client 0.21.1 0.26.0
langchain 1.3.11 1.4.6
langchain-core 1.4.8 1.6.12
langchain-openai 1.3.3 1.7.2
pandas 3.0.3 3.0.6
lancedb 0.38.0 0.40.0
qdrant-client 1.15.1 1.19.1
pre-commit 4.6.0 4.7.0
ruff 0.16.8 0.17.1

Updates aiohttp from 3.14.3 to 3.14.5
Updates azure-identity from 1.25.0 to 1.26.0

Release notes

Sourced from azure-identity's releases.

azure-identity_1.26.0

1.26.0 (2026-09-30)

Features Added

  • ManagedIdentityCredential now supports user-assigned managed identities on Azure Arc-enabled servers. An identity can be selected by client ID, object ID, or resource ID. Token responses that do not confirm the requested identity are rejected. (#48967)

Bugs Fixed

  • Fixed synchronous Service Fabric managed identity authentication with MSAL 1.39.0 and later. Service Fabric now uses the session from an Azure Core RequestsTransport. (#48967)
  • Fixed an issue where AuthorizationCodeCredential and the asynchronous OnBehalfOfCredential could return a cached token for another account when multiple credentials shared a token cache. (#49001)

Other Changes

  • Added RequestIdPolicy to the default pipeline policies to ensure a unique x-ms-client-request-id header is sent with each request. (#46070)
  • CertificateCredential now passes the PEM private key to MSAL as a str rather than bytes, matching MSAL's documented client_credential contract. (#46801)
  • Bumped the minimum dependency on msal to >=1.39.0.
Commits
  • 30d8bb9 [identity] prepare azure-identity 1.26.0 release (#49290)
  • c7148b7 [identity] Enable user-assigned managed identity for AzureArcCredential (#48967)
  • c5b1f4f [Identity] Fix identity cache issue (#49001)
  • 9d085c1 [AutoPR azure-mgmt-compute-bulkaction]-generated-from-SDK Generation - Python...
  • efc412d [TA] fix release error (#49261)
  • 3d9b8b3 Prepare Responses 2.3.0b2 release (#49281)
  • 8e49d15 [AutoPR azure-mgmt-resiliencemanagement]-generated-from-SDK Generation - Pyth...
  • ef68c78 Preserve canonical agent reference in response snapshots (#49256)
  • 3754db9 Configurations: 'specification/applink/AppLink.Management/tspconfig.yaml', a...
  • 0929352 [Mgmt] Make review drafts and incomplete outcomes reliable (#49275)
  • Additional commits viewable in compare view

Updates boto3 from 1.43.78 to 1.43.114

Commits
  • 432fa17 Merge branch 'release-1.43.114'
  • bf4aed7 Bumping version to 1.43.114
  • fa3e3f2 Add changelog entries from botocore
  • 69ed308 Merge branch 'release-1.43.113'
  • 3abaa49 Merge branch 'release-1.43.113' into develop
  • 741f8d9 Bumping version to 1.43.113
  • ad1c6b5 Add changelog entries from botocore
  • 9ca5e36 Merge branch 'release-1.43.112'
  • f5581ba Merge branch 'release-1.43.112' into develop
  • 6f065c3 Bumping version to 1.43.112
  • Additional commits viewable in compare view

Updates gitpython from 3.1.62 to 3.2.1

Release notes

Sourced from gitpython's releases.

3.2.1

What's Changed

New Contributors

Full Changelog: gitpython-developers/GitPython@3.2.0...3.2.1

3.2.0 - Security

What's Changed

... (truncated)

Changelog

Sourced from gitpython's changelog.

3.2.1

Security fixes for

If you can, also try and provide feedback on the upcoming v4 branch gitpython-developers/GitPython#2274 - patches welcome.

See the following for all changes. https://github.com/gitpython-developers/GitPython/releases/tag/3.2.1

3.2.0

Drops support for Python 3.7 (5 years after its EOL).

Security fixes for

If you can, also try and provide feedback on the upcoming v4 branch gitpython-developers/GitPython#2274 - patches welcome.

See the following for all changes. https://github.com/gitpython-developers/GitPython/releases/tag/3.2.0

Commits
  • c179357 prepare changelog prior to release
  • 97eadb8 fix(submodule): validate destinations before mutation
  • 6a7180a prepare for next release, v3.2
  • 0b64501 refactor(db): deprecate the pure-Python GitDB backend
  • 9349ff5 fix(repo): preserve literal separate Git directory paths
  • 8290c98 fix: bound actor and date parsing
  • 9ad28cc fix: complete safety checks in Git command wrappers
  • ce2093b bump minor version to indicate drop of python 3.7 support
  • dafafff Merge pull request #2247 from gitpython-developers/pos-arg-sanitization
  • 790bb31 fix(remote): reject option-shaped pull operands
  • Additional commits viewable in compare view

Updates starlette from 1.6.0 to 1.8.0

Release notes

Sourced from starlette's releases.

Version 1.8.0

This release adds HTTP 103 Early Hints, preserves response trailers through GZipMiddleware, and stops FileResponse transfers when clients disconnect. Starlette now requires Python 3.11.

Added

  • Add Request.send_early_hints() for HTTP 103 Early Hints through the ASGI http.response.early_hint extension #3435.

Changed

  • Require Python 3.11 or later, dropping support for Python 3.10 #3592.
  • Exclude native gRPC media types (application/grpc and application/grpc+...) from GZipMiddleware compression by default #3565.
  • Send http.response.start immediately in GZipMiddleware for responses with an existing Content-Encoding, status 206, or an excluded content type, instead of waiting for the first body chunk #3631.
  • Resolve the multipart charset once per request instead of once per field #3618.

Fixed

  • Preserve response trailers through GZipMiddleware #3565.
  • Stop FileResponse transfers when the client disconnects #3523.
  • Stop multipart range responses when the file ends before a range is complete, instead of looping forever #3583.
  • Ignore Range when If-Range contains a weak ETag #3567.
  • Include Allow: GET, HEAD in StaticFiles 405 responses #3640.
  • Close Request.stream() generators deterministically, avoiding "Exception ignored" errors with stacked BaseHTTPMiddleware #3628.
  • Add Vary: Cookie when Session.pop() removes an existing key #3186.
  • Emit Max-Age=0 on the session cookie when SessionMiddleware uses max_age=0 #3651.
  • Bracket IPv6 hostnames in URL.replace() #3617.

Full changelog: 1.7.0...1.8.0

Version 1.7.0

This release adds experimental OpenTelemetry tracing, HTTP QUERY support, and response trailers in TestClient. Starlette now requires AnyIO 4.

[!WARNING] OpenTelemetryMiddleware is experimental. Its API and emitted telemetry may change in minor releases without a deprecation period.

Added

  • Add experimental OpenTelemetryMiddleware for HTTP server spans, with URL exclusions and custom tracer providers #3438, #3463, and #3520.
  • Expose the matched route through scope["route"] #3438.
  • Support the QUERY HTTP method in HTTPEndpoint, CORS, and OpenAPI 3.2 schema generation #3489.
  • Capture HTTP response trailers in TestClient and expose them through response.extensions["http.response.trailers"] #3563.
  • Support partitioned cookies in SessionMiddleware #3510.
  • Add partitioned to Response.delete_cookie() on Python 3.14 and later #3376.
  • Support IPv6 hosts in TrustedHostMiddleware and TestClient #3471.
  • Support Python 3.15 #3508.

Changed

  • Require anyio>=4.0.0,<5, dropping support for AnyIO 3 #3512.
  • Raise WebSocketDisconnected, a RuntimeError subclass, for disconnected WebSocket operations #2767.
  • Accept Collection[str] in CORSMiddleware configuration annotations, including sets and frozensets #3518.

... (truncated)

Changelog

Sourced from starlette's changelog.

1.8.0 (October 13, 2026)

This release drops Python 3.10 support and adds HTTP 103 Early Hints.

Added

  • Add Request.send_early_hints() for HTTP 103 Early Hints through the ASGI http.response.early_hint extension #3435.

Changed

  • Require Python 3.11 or later, dropping support for Python 3.10 #3592.
  • Exclude native gRPC media types (application/grpc and application/grpc+...) from GZipMiddleware compression by default #3565.
  • Send http.response.start immediately in GZipMiddleware for responses with an existing Content-Encoding, status 206, or an excluded content type, instead of waiting for the first body chunk #3631.
  • Resolve the multipart charset once per request instead of once per field #3618.

Fixed

  • Preserve response trailers through GZipMiddleware #3565.
  • Stop FileResponse transfers when the client disconnects #3523.
  • Stop multipart range responses when the file ends before a range is complete, instead of looping forever #3583.
  • Ignore Range when If-Range contains a weak ETag #3567.
  • Include Allow: GET, HEAD in StaticFiles 405 responses #3640.
  • Close Request.stream() generators deterministically, avoiding "Exception ignored" errors with stacked BaseHTTPMiddleware #3628.
  • Add Vary: Cookie when Session.pop() removes an existing key #3186.
  • Emit Max-Age=0 on the session cookie when SessionMiddleware uses max_age=0 #3651.
  • Bracket IPv6 hostnames in URL.replace() #3617.

1.7.0 (September 23, 2026)

This release adds experimental OpenTelemetry tracing and requires AnyIO 4.

!!! warning "OpenTelemetryMiddleware is experimental" Its API and emitted telemetry may change in minor releases without a deprecation period #3574.

Added

  • Add experimental OpenTelemetryMiddleware for HTTP server spans, with URL exclusions and custom tracer providers #3438, #3463, and #3520.
  • Expose the matched route through scope["route"] #3438.
  • Support the QUERY HTTP method in HTTPEndpoint, CORS, and OpenAPI 3.2 schema generation #3489.
  • Capture HTTP response trailers in TestClient and expose them through response.extensions["http.response.trailers"] #3563.
  • Support partitioned cookies in SessionMiddleware #3510.
  • Add partitioned to Response.delete_cookie() on Python 3.14 and later #3376.
  • Support IPv6 hosts in TrustedHostMiddleware and TestClient #3471.
  • Support Python 3.15 #3508.

Changed

  • Require anyio>=4.0.0,<5, dropping support for AnyIO 3 #3512.
  • Raise WebSocketDisconnected, a RuntimeError subclass, for disconnected WebSocket operations #2767.

... (truncated)

Commits
  • 7b2948f Version 1.8.0 (#3660)
  • 5b544ce Send response start immediately when GZipMiddleware cannot compress (#3631)
  • 96d5023 Emit Max-Age=0 on session cookie when max_age=0 (#3651)
  • 0a15da3 Include allowed methods in StaticFiles 405 responses (#3640)
  • ff5b4df Close Request.stream() generators with aclosing (#3628)
  • 7cb2f09 Mark sessions as accessed when popping existing keys (#3186)
  • c67ca4e Add HTTP 103 Early Hints support (#3435)
  • 04741d0 Update broken external documentation links (#3621)
  • 470f986 Correct the documented WebSocket and Request constructor signatures (#3580)
  • b2e8750 Bracket IPv6 hostnames in URL.replace() (#3617)
  • Additional commits viewable in compare view

Updates pyjwt from 2.13.0 to 2.15.1

Release notes

Sourced from pyjwt's releases.

2.15.1

See the 2.15.1 changelog for complete release details.

2.15.0

See the 2.15.0 changelog for complete release details.

2.14.0

See the 2.14.0 changelog for the complete release details and related security advisories.

Changelog

Sourced from pyjwt's changelog.

v2.15.1 <https://github.com/jpadilla/pyjwt/compare/2.15.0...2.15.1>__

Fixed


- Accept trailing Base64URL ``=`` padding when decoding JWS segments, so
  tokens issued by AWS ALB and similar systems verify instead of raising
  ``DecodeError: Invalid crypto padding``. Non-alphabet junk such as
  ``!!!!`` remains rejected (`[#1209](https://github.com/jpadilla/pyjwt/issues/1209) <https://github.com/jpadilla/pyjwt/issues/1209>`__).

v2.15.0 &lt;https://github.com/jpadilla/pyjwt/compare/2.14.0...2.15.0&gt;__

Security

  • Wrap recursion errors from deeply nested JWT payloads in DecodeError instead of exposing a raw RecursionError.

Added


- Support Python 3.15 by @kytta in `[#1202](https://github.com/jpadilla/pyjwt/issues/1202) <https://github.com/jpadilla/pyjwt/pull/1202>`__

Changed

  • JWKSetCache now stores the parsed PyJWKSet rather than the raw JWKS payload, so a cache hit no longer re-parses every key. JWKSetCache.put() accepts either form and raises PyJWKSetError for anything else. As a result, PyJWKClient.get_jwk_set() returns the same PyJWKSet instance for as long as it stays cached, rather than a freshly built one per call in [#1208](https://github.com/jpadilla/pyjwt/issues/1208) <https://github.com/jpadilla/pyjwt/pull/1208>__
  • PyJWKClient.fetch_data() now raises PyJWKClientError("The JWKS endpoint did not return a JSON object") when the endpoint response is not a JSON object, instead of returning it for get_jwk_set() to reject. Callers reaching the JWKS through get_jwk_set() see the same error as before in [#1208](https://github.com/jpadilla/pyjwt/issues/1208) <https://github.com/jpadilla/pyjwt/pull/1208>__

Fixed


- Return cached ``PyJWKSet`` values from ``PyJWKClient.get_jwk_set()`` instead
  of raising ``PyJWKClientError("The JWKS endpoint did not return a JSON
  object")``. ``JWKSetCache.put()`` documents ``PyJWKSet`` as the cached value,
  so callers pre-populating the cache to avoid a network round-trip could not
  read it back in `[#914](https://github.com/jpadilla/pyjwt/issues/914) <https://github.com/jpadilla/pyjwt/issues/914>`__ and
  `[#1208](https://github.com/jpadilla/pyjwt/issues/1208) <https://github.com/jpadilla/pyjwt/pull/1208>`__
</tr></table> 

... (truncated)

Commits
  • 7d5ef55 chore: prepare 2.15.1 release
  • 7bf3252 Accept canonical Base64URL padding in JWT segments (#1216)
  • 1d41a64 chore: prepare 2.15.0 release
  • 9bc0665 fix: make recursive payload tests deterministic
  • 5fde08a fix: normalize recursive JWT payload errors
  • 171062d utils: mention bytes in force_bytes type error (#1173)
  • c9d4d53 docs/conf: drop duplicate 'and' from read() docstring (#1174)
  • 2763752 Add support for Python 3.15 (#1202)
  • 4adcd02 Catch http.client.HTTPException in PyJWKClient.fetch_data (#1201)
  • 9e501d9 fix: correct docstring typo in _validate_jti (#1179)
  • Additional commits viewable in compare view

Updates python-gitlab from 8.3.0 to 8.6.0

Release notes

Sourced from python-gitlab's releases.

v8.6.0 (2026-09-28)

This release is published under the LGPL-3.0-or-later License.

Bug Fixes

  • COPYING: Use the combined LGPGL and GPL license text. (b6e65dd)

  • renovate: Add a 7-day cooldown for updates (6bb4216)

Features

  • hooks: Add all available project hook attributes (f57c33b)

Testing

  • Don't delete source branch by default for projects (aff7954)

Detailed Changes: v8.5.0...v8.6.0

v8.5.0 (2026-07-28)

This release is published under the LGPL-3.0-or-later License.

Bug Fixes

  • Typo (72134f5)

  • api: Allow ProjectMergeRequestDiscussionNote.resolved to be updated (b411e5a)

  • client: Retry fetching server version after an unknown result (046fbac)

Continuous Integration

  • Run the pre-commit rst checks in the CI (a9c5d17)

Documentation

  • Correct error with backticks (e57559e)

  • discussions: Add example of resolving a single project merge request discussion note (2ef6452)

Features

  • api: Add ListMixin to remaining *DiscussionNoteManagers (0e2347c)

  • client: Additionally handle retries for request timeouts (4e32439)

... (truncated)

Changelog

Sourced from python-gitlab's changelog.

v8.6.0 (2026-09-28)

Bug Fixes

  • COPYING: Use the combined LGPGL and GPL license text. (b6e65dd)

  • renovate: Add a 7-day cooldown for updates (6bb4216)

Features

  • hooks: Add all available project hook attributes (f57c33b)

Testing

  • Don't delete source branch by default for projects (aff7954)

v8.5.0 (2026-07-28)

Bug Fixes

  • Typo (72134f5)

  • api: Allow ProjectMergeRequestDiscussionNote.resolved to be updated (b411e5a)

  • client: Retry fetching server version after an unknown result (046fbac)

Continuous Integration

  • Run the pre-commit rst checks in the CI (a9c5d17)

Documentation

  • Correct error with backticks (e57559e)

  • discussions: Add example of resolving a single project merge request discussion note (2ef6452)

Features

  • api: Add ListMixin to remaining *DiscussionNoteManagers

... (truncated)

Commits
  • 51eb17e chore: release v8.6.0
  • ce92c8f chore(deps): update all non-major dependencies
  • a3e3713 chore(deps): update gitlab/gitlab-ee docker tag to v19.3.2-ee.0 (#3448)
  • a47b5e0 chore(deps): update all non-major dependencies
  • c58ca36 chore(deps): update pre-commit hook pycqa/isort to v9
  • 50b7c1e chore(deps): update dependency isort to v9
  • dc9afed chore(deps): update all non-major dependencies
  • c56d5fd chore(deps): update gitlab/gitlab-ee docker tag to v19.3.1-ee.0 (#3443)
  • 3032667 chore(deps): update dependency types-setuptools to v84
  • f4a643f chore(deps): update pre-commit hook maxbrunet/pre-commit-renovate to v44
  • Additional commits viewable in compare view

Updates starlette-context from 0.3.6 to 0.5.1

Release notes

Sourced from starlette-context's releases.

v0.5.1

  • Fix HeaderKeys enum str() behavior inconsistency across Python versions (#192). On Python 3.11+, str(HeaderKeys.api_key) returned "HeaderKeys.api_key" instead of "X-API-Key". Now uses StrEnum for consistent behavior across all supported Python versions.

v0.5.0

  • Add support for Python 3.13 and 3.14
  • Drop support for Python 3.9. Now only 3.10+ is supported
  • Migrate from Poetry to uv as the package manager and build tool
  • Switch build backend from poetry-core to hatchling
  • Replace assert with ConfigurationError in Plugin.process_request for clearer error messages
  • Replace Black with ruff format for code formatting
  • Replace deprecated HTTP_422_UNPROCESSABLE_ENTITY with HTTP_422_UNPROCESSABLE_CONTENT

v0.4.0

Commits

Updates uvicorn from 0.52.4 to 0.54.0

Release notes

Sourced from uvicorn's releases.

Version 0.54.0

📨 Send metadata after the response body

uvicorn 0.54.0 adds response trailers and 103 Early Hints to its experimental HTTP/2 implementation through zttp.

uv add uvicorn==0.54.0 "zttp>=0.0.34"
  • Send HTTP/2 response trailers (#3146). The ASGI http.response.trailers extension lets applications send metadata, such as checksums, after the response body. Clients must send TE: trailers to receive them. Multiple trailer messages are combined before completing the response.
  • HTTP/2 remains experimental and opt-in. Enable it with --http zttp --http2. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.

💡 Hint at resources before the final response

  • Send 103 Early Hints over HTTP/2 (#3137). Applications can use the ASGI http.response.early_hint extension to send resource hints before the final response. Each supplied link becomes a separate Link header.

Full changelog: 0.53.0...0.54.0

Version 0.53.0

🌐 Opt-in HTTP/2 support

uvicorn 0.53.0 adds experimental HTTP/2 through zttp, alongside a new zuvloop integration and connection-handling improvements.

uv add uvicorn==0.53.0
  • Serve HTTP/1.1 and HTTP/2 with zttp (#2982, #3101). Install zttp, then enable HTTP/2 with --http zttp --http2. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.
  • HTTP/2 remains experimental. Upgrade-based h2c and WebSockets over HTTP/2 are not supported.

⚙️ More event loop choice

  • Run Uvicorn with zuvloop (#3104). Install zuvloop separately and select it explicitly with --loop zuvloop on CPython 3.14 or newer.

🛡️ More reliable connections and proxies

  • Honor Connection: close token lists (#3103). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.
  • Trust IPv6 loopback proxies by default (#3119). The default FORWARDED_ALLOW_IPS value now includes ::1.
  • Keep upgraded WebSockets alive (#3107). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.

Full changelog: 0.52.4...0.53.0

Changelog

Sourced from uvicorn's changelog.

0.54.0 (September 24, 2026)

HTTP/2 support remains experimental. Install zttp>=0.0.34 and enable it with --http zttp --http2.

Added

  • Add HTTP/2 response trailers through the ASGI http.response.trailers extension. Clients must send TE: trailers to receive them (#3146)
  • Add HTTP/2 103 Early Hints through the ASGI http.response.early_hint extension (#3137)

0.53.0 (September 14, 2026)

This release adds experimental HTTP/2 support through zttp. Enable it with --http zttp --http2. Upgrade-based h2c and WebSockets over HTTP/2 are not supported.

Added

  • Add experimental HTTP/2 support through zttp (#2982, #3101)
  • Add support for zuvloop (#3104)

Fixed

  • Handle comma-separated, case-insensitive Connection: close tokens across HTTP implementations (#3103)
  • Trust IPv6 loopback in the default FORWARDED_ALLOW_IPS value (#3119)
  • Cancel the HTTP keep-alive timer when upgrading to WebSocket (#3107)
Commits
  • 3eb9a9a Version 0.54.0 (#3161)
  • cd7ef6d Remove races from supervisor tests (#3134)
  • a56c7cc Support HTTP/2 response trailers (#3146)
  • 9bd4404 chore(deps): bump anyio from 4.13.0 to 4.14.2 (#3145)
  • 21f39ef Add HTTP/2 Early Hints support (#3137)
  • 421708f Version 0.53.0 (#3136)
  • f1a1bff Unset the keep-alive timer when upgrading to WebSocket (#3107)
  • 63971ed Document HTTP/2 support (#3130)
  • Description has been truncated


    Summary by cubic

    Bumps 21 Python dependencies in the python-minor-and-patch group across runtime, similar-issue, and dev dependencies, updating both exact pins and locked transitive versions in pyproject.toml and uv.lock.

    Review notes

    • gitpython 3.2.x drops Python 3.7, deprecates the GitDB backend, and bundles security fixes.
    • starlette 1.8.0 requires Python 3.11+ and adds HTTP 103 Early Hints support.
    • starlette-context 0.5.x drops Python 3.9 support.
    • pyjwt 2.15.x applies security fixes and changes JWKSetCache to store parsed PyJWKSet objects instead of raw JWKS payloads.

    Written for commit 06d99c7. Summary will update on new commits.

    View guided diff Turn on auto-fix

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
- dependency-name: azure-identity
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: boto3
  dependency-version: 1.43.114
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
- dependency-name: gitpython
  dependency-version: 3.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: starlette
  dependency-version: 1.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: pyjwt
  dependency-version: 2.15.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: python-gitlab
  dependency-version: 8.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: starlette-context
  dependency-version: 0.5.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: uvicorn
  dependency-version: 0.54.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: a2a-sdk[http-server]
  dependency-version: 1.2.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: pydantic
  dependency-version: 2.14.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: pydantic-settings
  dependency-version: 2.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: prometheus-client
  dependency-version: 0.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: langchain
  dependency-version: 1.4.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: langchain-core
  dependency-version: 1.6.12
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: langchain-openai
  dependency-version: 1.7.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: pandas
  dependency-version: 3.0.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
- dependency-name: lancedb
  dependency-version: 0.40.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: qdrant-client
  dependency-version: 1.19.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: pre-commit
  dependency-version: 4.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
- dependency-name: ruff
  dependency-version: 0.17.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Oct 19, 2026
@github-actions github-actions Bot added the chore label Oct 19, 2026
@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: JWEB0689/coderabbit/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0a5712a2-b52b-4ff6-9e38-79c7ff1203cb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread pyproject.toml
"python-gitlab==8.6.0",
"retry==0.9.2",
"starlette-context==0.3.6",
"starlette-context==0.5.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: Two minor versions of a 0.x library — semver's way of saying 'everything you loved is now a historical footnote.' This is not some peripheral utility: starlette_context owns the request-scoped settings isolation that config_loader.get_settings() reads and that ~20 modules mutate. And the plot twist: pr_agent/servers/github_polling.py:134 already documents 0.5.1's 'bare yield skips the ContextVar reset' bug, so this code was written against 0.5.x semantics while the pin insisted on 0.3.6. This PR finally makes the pin match the code — by flipping the runtime behavior of the context under every webhook, every CLI run and every polling iteration. That reset is the one thing standing between two requests and a cross-request settings leak, and it is being changed in a Dependabot PR with a shrug.

🩹 The Fix: Before merge, run the isolation suites that actually exercise it: PYTHONPATH=. uv run pytest tests/unittest/test_mosaico_isolation.py tests/unittest/test_per_directory_settings.py tests/unittest/test_apply_repo_settings.py tests/unittest/test_extra_config_url.py -q, and confirm starlette_context.errors.ContextDoesNotExistError and starlette_context.middleware.RawContextMiddleware still exist in 0.5.1 (both are imported by first-party code). If the reset semantics moved, re-check the manual __enter__/__exit__ drivers in pr_agent/cli.py and pr_agent/servers/github_polling.py.

📏 Severity: warning


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread pyproject.toml
# Prometheus scrape endpoint for [otel] command telemetry (native /metrics on
# the webhook apps). Multiprocess-capable; see pr_agent/telemetry/prometheus.py.
"prometheus-client==0.21.1",
"prometheus-client==0.26.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: 0.21 → 0.26 in one PR: five minors of a library that ships 0.x for a reason. And your scrape endpoint reaches into the medicine cabinet — pr_agent/telemetry/prometheus.py:92 reads prometheus_values.ValueClass._multiprocess, a private attribute of a private module, to decide whether /metrics serves the whole cluster or one sad little worker. If 0.26 renamed that attribute you do not get an exception; you get a scrape that looks perfectly healthy while quietly reporting one worker's numbers forever. The other landmine is the on-disk multiprocess state format: a rolling deploy leaves 0.21.1 and 0.26.0 workers writing into the same PROMETHEUS_MULTIPROC_DIR, and if that file format moved, the collector merges two dialects into confetti.

🩹 The Fix: Confirm prometheus_client.values.ValueClass._multiprocess still exists in 0.26.0 (and prefer a supported signal if one is available). tests/unittest/test_telemetry_prometheus.py already spawns two worker processes and asserts multiproc aggregation, so PYTHONPATH=. uv run pytest tests/unittest/test_telemetry_prometheus.py -q is your smoke test; add a case that scrapes a directory written by the previous version if rolling deploys are a thing you do.

📏 Severity: warning


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread pyproject.toml
"azure-identity==1.25.0",
"boto3==1.43.78",
"azure-identity==1.26.0",
"boto3==1.43.114",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: The boto3 pin moves, and botocore rides along from 1.43.83 to 1.43.114 — 31 patch releases, each one free to rearrange the furniture. Meanwhile pr_agent/algo/ai_handlers/litellm_ai_handler.py does not use boto3 like a normal person: it reaches into session._session (line 993), then rewrites ContainerProvider._environ (line 999), reads AssumeRoleWithWebIdentityProvider._disable_env_vars and ._CONFIG_TO_ENV_VAR (lines 1000-1003), and monkeypatches provider._get_env_config (line 1009). That is four private attributes and one private method, surgically edited, in a library nobody promised to keep stable. The comment on line 996 even admits it — 'already disable environment selection in botocore 1.43.x' — so you already know you are version-coupled; you are just not reading the fine print of 31 more patch releases.

🩹 The Fix: Re-verify those five names against botocore 1.43.114, and fail loudly when they are missing instead of silently falling through to ambient credentials. The unit tests mock boto3/botocore wholesale, so nothing in CI would catch a rename — add one test that runs _bind_aws_workload_token_sources against a real boto3.Session, or pin botocore explicitly next to boto3 so the pair cannot drift apart again.

📏 Severity: warning


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread pyproject.toml
"uvicorn>=0.31.1,<1",
"tenacity==8.2.3",
"a2a-sdk[http-server]==1.0.3",
"a2a-sdk[http-server]==1.2.2",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: The MOSAICO executor imports resolve_user_scope from a2a.server.tasks.inmemory_task_store (pr_agent/mosaico/executor.py:30) — an internal implementation module of a pre-2.0 SDK — and get_message_text from a2a.helpers.proto_helpers (line 26). Internals in 1.x move when someone renames a folder, not when they file a deprecation notice. Since these are module-level imports, the failure mode is not graceful degradation; it is the entire A2A server failing to import, and mosaico/server.py is a separate app from the webhook, so your smoke test may never notice. Meanwhile the executor tests monkeypatch TaskUpdater with a spy, so they never touch the real signature — the only test that does is test_mosaico_a2a_roundtrip.py.

🩹 The Fix: Run PYTHONPATH=. uv run pytest tests/unittest/test_mosaico_a2a_roundtrip.py tests/unittest/test_mosaico_executor.py -q against 1.2.2 and confirm a2a.server.tasks.inmemory_task_store.resolve_user_scope, a2a.helpers.proto_helpers.get_message_text and TaskUpdater(event_queue, task_id, context_id) still exist. If the internals moved, switch to the public a2a.server.tasks export or vendor the scope resolution locally.

📏 Severity: warning


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread pyproject.toml
"lancedb==0.38.0",
"qdrant-client==1.15.1",
"lancedb==0.40.0",
"qdrant-client==1.19.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: Your qdrant client still calls client.search(...) (pr_agent/tools/pr_similar_issue.py:497) and client.upload_points(...) (line 887) — the two aliases qdrant-client deprecated in favour of query_points() and upsert(). Bumping 1.15 → 1.19 walks straight through the window where those aliases get deleted, and when they go, the similar-issue tool does not warn you; it just raises AttributeError in the middle of an ingest. The sting in the tail: nothing in CI would notice, because the qdrant tests use fake clients (tests/unittest/test_similar_issue_qdrant_ingest.py and friends never import the real qdrant_client), and this dependency group is not even installed by default.

🩹 The Fix: Migrate the two call sites to query_points(...) and upsert(...) before or with this bump, and add one test that imports the real qdrant_client so the next rename cannot hide from you.

📏 Severity: warning


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread pyproject.toml
"httpx==0.28.1",
"pre-commit>=4,<5",
"ruff==0.16.8",
"ruff==0.17.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: The linter bump is the quiet one, and quiet ones are the dangerous ones. .pre-commit-config.yaml:40 runs uv run --frozen ruff check, i.e. the locked ruff — so this line does not merely update a dev tool, it changes what CI enforces for the entire repository. Ruff minors add rules to the selected families (E/F/B/I), and this repo's lint.ignore is an explicit ledger of pre-existing violations, so one new rule can redden the whole codebase inside a PR whose title says '21 dependency updates'. The irony: your AGENTS.md treats that ignore list as a debt ledger to burn down, and this PR grows it by proxy.

🩹 The Fix: Run uv run ruff check on 0.17.1 locally, fix what is new, and either drop or justify any added lint.ignore entries — do not let a Dependabot PR quietly become the thing that expands the debt list.

📏 Severity: suggestion


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

Comment thread pyproject.toml
# litellm/integrations/otel/model/config.py. Keep the exact pin to lock the resolved transitive version.
# Version matches litellm's own constraint (>=2.14.1,<3.0); the existing observability guard covers the callback import.
"pydantic-settings==2.14.2",
"pydantic-settings==2.16.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 The Roast: The comment right above this line (72-74) is a tiny essay about why this pin exists: litellm imports pydantic-settings unconditionally, so the pin 'locks the resolved transitive version', and 'Version matches litellm's own constraint (>=2.14.1,<3.0)'. Dependabot dutifully bumped 2.14.2 → 2.16.0 and left the essay untouched. But 2.16.0 is no longer 'the resolved transitive version' of litellm 1.102.1 — it is now a deliberate pin that merely satisfies litellm's range, so the sentence that justified it now describes a different relationship than the one that exists. And the guard it leans on (the 'existing observability guard') only asserts that pydantic_settings imports — tests/unittest/test_mosaico_observability_deps.py:59 — it never checks a single field or config behaviour.

🩹 The Fix: Update the comment to state the new rationale (and whether 2.16.0 was picked deliberately over what litellm would resolve on its own), and confirm litellm 1.102.1's declared range still admits it. If the intent is to track litellm's resolution, pin that version instead of letting Dependabot pick a different one.

📏 Severity: nitpick


Reply with @kilocode-bot fix it to have Kilo Code address this issue.

@kilo-code-bot

kilo-code-bot Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Code Review Roast 🔥

Verdict: 7 Issues Found | Recommendation: Address before merge

Overview

Severity Count
🚨 critical 0
⚠️ warning 5
💡 suggestion 1
🤏 nitpick 1
Issue Details (click to expand)
File Line Roast
pyproject.toml 38 boto3/botocore jump rides over five private botocore internals the AWS handler surgically edits
pyproject.toml 62 starlette-context 0.3.6 → 0.5.1 flips the semantics of the request-scoped settings context every webhook depends on
pyproject.toml 68 a2a-sdk 1.0 → 1.2 imports from an internal module path — a rename away from a dead A2A server
pyproject.toml 75 pydantic-settings pin moved while the comment explaining the pin stayed frozen in 2024
pyproject.toml 85 prometheus-client 0.21 → 0.26 hides behind a private _multiprocess attribute and a shared on-disk state format
pyproject.toml 134 qdrant-client 1.15 → 1.19 walks into the removal window of the search()/upload_points() aliases the code still calls
pyproject.toml 142 ruff 0.17.1 changes what CI enforces repo-wide, because pre-commit runs the locked ruff

🏆 Best part: The lockfile surgery is immaculate — 21 packages, a coherent resolution, and the repo's own pin-razor comments (pydantic-settings, prometheus-client, google-cloud-storage) are still exactly where someone deliberately put them. Dependabot did not drop a single explanatory comment on its way through. I checked twice, because I don't trust bots.

💀 Worst part: starlette-context 0.3.6 → 0.5.1. The context proxy is this repo's request isolation: get_settings() reads it, twenty modules mutate it, and every webhook app installs RawContextMiddleware for it. Meanwhile pr_agent/servers/github_polling.py:134 already documents 0.5.1's 'the reset is skipped when an exception crosses the with-body' bug — meaning the code was written for 0.5.x while the pin held it at 0.3.6. This PR flips the runtime behavior of the isolation mechanism in a patch-PR, and the only thing between that and a cross-request settings leak is a test suite you have to remember to run.

📊 Overall: Like changing the locks on a building while the tenants are still inside — nothing is obviously on fire, but the pins that hold the walls together all moved at once, and three of them (botocore internals, prometheus private attribute, a2a internal module) are load-bearing in ways nobody wrote a test for.

Files Reviewed (2 files)
  • pyproject.toml - 7 issues
  • uv.lock - generated lockfile, reviewed for version deltas only (skipped as a review target)

Fix these issues in Kilo Cloud


Reviewed by free · Input: 193.5K · Output: 29.4K · Cached: 1.7M

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants