diff --git a/.devcontainer/CHANGELOG.md b/.devcontainer/CHANGELOG.md
index 4444c03..65462e0 100644
--- a/.devcontainer/CHANGELOG.md
+++ b/.devcontainer/CHANGELOG.md
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.3.4](https://github.com/vig-os/devcontainer/releases/tag/0.3.4) - 2026-04-29
+
+### Added
+
+- **Renovate config validation on pull requests** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Workflow discovers tracked `renovate*.json` files (excluding `assets/workspace/renovate.json`, whose `extends` uses an unresolved template placeholder) and runs `renovate-config-validator --strict` on the rest when renovate JSON changes
+ - `just test-renovate` recipe mirrors the workflow locally and is included in `just test`
+
+### Changed
+
+- **Bump expected tool versions in image tests**
+ - `gh` 2.89 → 2.92, `just` 1.49 → 1.50, `cargo-binstall` 1.17 → 1.18 to match the latest upstream releases the image now installs
+
+### Fixed
+
+- **Renovate preset blocked all dependency updates** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Split Python `packageRules` so `matchUpdateTypes` and `rangeStrategy` are not combined in one rule; rename `baseBranches` to `baseBranchPatterns`
+ - Remove invalid `uv` from `enabledManagers` (`pep621` continues to handle `pyproject.toml` and `uv.lock`)
+
## [0.3.3](https://github.com/vig-os/devcontainer/releases/tag/0.3.3) - 2026-04-10
### Added
@@ -41,6 +60,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Promote-release draft release validation** ([#507](https://github.com/vig-os/devcontainer/issues/507))
- Use the paginated releases list API with jq instead of `GET /releases/tags/{tag}`, which returns 404 for draft releases
- Apply the same release lookup for RC git tag cleanup in upstream and workspace `promote-release.yml`
+- **Promote-release validate job cannot see draft releases** ([#517](https://github.com/vig-os/devcontainer/issues/517))
+ - Elevate `validate` job permissions to `contents: write` so the token has push-level access required by the GitHub API to list draft releases
+ - Use `github.token` instead of the release app token for the draft release check in workspace `promote-release.yml`
### Security
diff --git a/.github/renovate-default.json b/.github/renovate-default.json
index 95c5a45..b010c7f 100644
--- a/.github/renovate-default.json
+++ b/.github/renovate-default.json
@@ -3,7 +3,7 @@
"extends": ["config:recommended"],
"timezone": "Etc/UTC",
"schedule": ["before 9am on monday"],
- "baseBranches": ["dev"],
+ "baseBranchPatterns": ["dev"],
"rebaseWhen": "conflicted",
"gitIgnoredAuthors": ["41898282+github-actions[bot]@users.noreply.github.com"],
"packageRules": [
@@ -23,21 +23,17 @@
"semanticCommitScope": "actions"
},
{
- "description": "Python (PEP 621 + uv) — pin ranges, group minor/patch",
- "matchManagers": ["pep621", "uv"],
- "matchUpdateTypes": ["minor", "patch"],
- "groupName": "python (minor and patch)",
+ "description": "Python (PEP 621) — always pin ranges",
+ "matchManagers": ["pep621"],
"rangeStrategy": "pin",
"semanticCommitType": "build",
"semanticCommitScope": "pip"
},
{
- "description": "Python — major updates stay separate",
- "matchManagers": ["pep621", "uv"],
- "matchUpdateTypes": ["major"],
- "rangeStrategy": "pin",
- "semanticCommitType": "build",
- "semanticCommitScope": "pip"
+ "description": "Python — group minor/patch",
+ "matchManagers": ["pep621"],
+ "matchUpdateTypes": ["minor", "patch"],
+ "groupName": "python (minor and patch)"
},
{
"description": "npm",
diff --git a/.github/workflows/promote-release.yml b/.github/workflows/promote-release.yml
index 54eac6d..766cff4 100644
--- a/.github/workflows/promote-release.yml
+++ b/.github/workflows/promote-release.yml
@@ -53,7 +53,7 @@ jobs:
outputs:
version: ${{ steps.vars.outputs.version }}
permissions:
- contents: read
+ contents: write
pull-requests: read
defaults:
run:
@@ -87,7 +87,7 @@ jobs:
- name: Verify draft GitHub Release exists
env:
- GH_TOKEN: ${{ steps.release_app_token.outputs.token }}
+ GH_TOKEN: ${{ github.token }}
VERSION: ${{ steps.vars.outputs.version }}
run: |
set -euo pipefail
diff --git a/.vig-os b/.vig-os
index 0e54bf9..c366ff1 100644
--- a/.vig-os
+++ b/.vig-os
@@ -1,2 +1,2 @@
# vig-os devcontainer configuration
-DEVCONTAINER_VERSION=0.3.3
+DEVCONTAINER_VERSION=0.3.4
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08c3d21..87c1dff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## [0.3.3](https://github.com/vig-os/devcontainer-smoke-test/releases/tag/0.3.3) - 2026-04-10
+## [0.3.4](https://github.com/vig-os/devcontainer-smoke-test/releases/tag/0.3.4) - 2026-04-29
+
+### Added
+
+- **Renovate config validation on pull requests** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Workflow discovers tracked `renovate*.json` files (excluding `assets/workspace/renovate.json`, whose `extends` uses an unresolved template placeholder) and runs `renovate-config-validator --strict` on the rest when renovate JSON changes
+ - `just test-renovate` recipe mirrors the workflow locally and is included in `just test`
+
+### Changed
+
+- **Bump expected tool versions in image tests**
+ - `gh` 2.89 → 2.92, `just` 1.49 → 1.50, `cargo-binstall` 1.17 → 1.18 to match the latest upstream releases the image now installs
+
+### Fixed
+
+- **Renovate preset blocked all dependency updates** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Split Python `packageRules` so `matchUpdateTypes` and `rangeStrategy` are not combined in one rule; rename `baseBranches` to `baseBranchPatterns`
+ - Remove invalid `uv` from `enabledManagers` (`pep621` continues to handle `pyproject.toml` and `uv.lock`)
+
+## [0.3.3](https://github.com/vig-os/devcontainer/releases/tag/0.3.3) - 2026-04-10
### Added
@@ -41,6 +60,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- **Promote-release draft release validation** ([#507](https://github.com/vig-os/devcontainer/issues/507))
- Use the paginated releases list API with jq instead of `GET /releases/tags/{tag}`, which returns 404 for draft releases
- Apply the same release lookup for RC git tag cleanup in upstream and workspace `promote-release.yml`
+- **Promote-release validate job cannot see draft releases** ([#517](https://github.com/vig-os/devcontainer/issues/517))
+ - Elevate `validate` job permissions to `contents: write` so the token has push-level access required by the GitHub API to list draft releases
+ - Use `github.token` instead of the release app token for the draft release check in workspace `promote-release.yml`
### Security
diff --git a/docs/pull-requests/pr-117.md b/docs/pull-requests/pr-117.md
index a788915..ad78520 100644
--- a/docs/pull-requests/pr-117.md
+++ b/docs/pull-requests/pr-117.md
@@ -1,18 +1,18 @@
---
type: pull_request
-state: open
+state: closed
branch: dependabot/github_actions/dev/actions-minor-patch-003dc165f5 → dev
created: 2026-04-05T11:49:02Z
-updated: 2026-04-06T05:24:28Z
+updated: 2026-04-13T05:26:47Z
author: dependabot[bot]
author_url: https://github.com/dependabot[bot]
url: https://github.com/vig-os/devcontainer-smoke-test/pull/117
-comments: 0
+comments: 1
labels: dependencies, github_actions
assignees: none
milestone: none
projects: none
-synced: 2026-04-07T04:33:13.916Z
+synced: 2026-04-14T04:45:15.555Z
---
# [PR 117](https://github.com/vig-os/devcontainer-smoke-test/pull/117) ci(deps): bump actions/cache from 5.0.3 to 5.0.4 in the actions-minor-patch group across 1 directory
@@ -125,3 +125,22 @@ Relevant for maintainers with write access only.
+
+---
+---
+
+# Comments (1)
+
+## [Comment #1](https://github.com/vig-os/devcontainer-smoke-test/pull/117#issuecomment-4234046119) by [@dependabot[bot]](https://github.com/apps/dependabot)
+
+_Posted on April 13, 2026 at 05:26 AM_
+
+Looks like actions/cache is updatable in another way, so this is no longer needed.
+
+---
+---
+
+## Commits
+
+### Commit 1: [01832fb](https://github.com/vig-os/devcontainer-smoke-test/commit/01832fb7c4a701fa9d3114c76959604c2ec254a0) by [dependabot[bot]](https://github.com/apps/dependabot) on April 6, 2026 at 05:24 AM
+ci(deps): bump actions/cache, 4 files modified (.github/workflows/sync-issues.yml)
diff --git a/docs/pull-requests/pr-134.md b/docs/pull-requests/pr-134.md
index e622cf9..b5724f0 100644
--- a/docs/pull-requests/pr-134.md
+++ b/docs/pull-requests/pr-134.md
@@ -1,9 +1,9 @@
---
type: pull_request
-state: open
+state: closed (merged)
branch: release/0.3.3 → main
created: 2026-04-10T14:13:58Z
-updated: 2026-04-10T14:16:08Z
+updated: 2026-04-10T14:21:49Z
author: vig-os-release-app[bot]
author_url: https://github.com/vig-os-release-app[bot]
url: https://github.com/vig-os/devcontainer-smoke-test/pull/134
@@ -12,7 +12,8 @@ labels: release-kind:final
assignees: none
milestone: none
projects: none
-synced: 2026-04-10T14:16:58.061Z
+merged: 2026-04-10T14:21:47Z
+synced: 2026-04-11T04:22:03.367Z
---
# [PR 134](https://github.com/vig-os/devcontainer-smoke-test/pull/134) chore: release 0.3.3
@@ -65,3 +66,30 @@ This PR prepares release 0.3.3 for merge to main.
- Refresh `.trivyignore`: drop resolved gh/docker-cli and gRPC entries; add Go stdlib and typos-related suppressions plus `jwt-token` false positive
- Suppress unfixable base-image CVEs: ncurses (CVE-2025-69720), SQLite (CVE-2025-7458), systemd (CVE-2026-29111), zlib/minizip (CVE-2023-45853)
+
+
+---
+---
+
+## Commits
+
+### Commit 1: [8e9b28c](https://github.com/vig-os/devcontainer-smoke-test/commit/8e9b28ce2715c17233abf55e6d83ed0c1015df70) by [vig-os-release-app[bot]](https://github.com/apps/vig-os-release-app) on April 10, 2026 at 01:54 PM
+chore: sync dev with main (#132), 14 files modified (CHANGELOG.md)
+
+### Commit 2: [88566c6](https://github.com/vig-os/devcontainer-smoke-test/commit/88566c60812ba7e42fe58bf30bae8a2cfcff3fe9) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:11 PM
+chore: deploy 0.3.3, 6 files modified (.devcontainer/CHANGELOG.md, .vig-os, CHANGELOG.md)
+
+### Commit 3: [c6e7346](https://github.com/vig-os/devcontainer-smoke-test/commit/c6e73469a439cec5801cce26576f66ccc5015b53) by [vig-os-release-app[bot]](https://github.com/apps/vig-os-release-app) on April 10, 2026 at 02:12 PM
+chore: deploy 0.3.3 (#133), 6 files modified (.devcontainer/CHANGELOG.md, .vig-os, CHANGELOG.md)
+
+### Commit 4: [4cb7b74](https://github.com/vig-os/devcontainer-smoke-test/commit/4cb7b74f480fbc746c9d2093b016d5b66b89f9ab) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:13 PM
+chore: freeze changelog for release 0.3.3, 14 files modified (CHANGELOG.md)
+
+### Commit 5: [9416934](https://github.com/vig-os/devcontainer-smoke-test/commit/9416934c2e11f8e2ccd3ba74c0fa03909a9945e0) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:13 PM
+chore: prepare release 0.3.3, 14 files modified (CHANGELOG.md)
+
+### Commit 6: [41fa9c3](https://github.com/vig-os/devcontainer-smoke-test/commit/41fa9c344433590ae272c1b3573268b56695bc08) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:16 PM
+chore: finalize release 0.3.3, 2 files modified (CHANGELOG.md)
+
+### Commit 7: [e9eae4a](https://github.com/vig-os/devcontainer-smoke-test/commit/e9eae4a53f0c13edab9e7de78cec948b09dca9ec) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:17 PM
+chore: sync issues and PRs, 260 files modified (docs/pull-requests/pr-130.md, docs/pull-requests/pr-131.md, docs/pull-requests/pr-132.md, docs/pull-requests/pr-133.md, docs/pull-requests/pr-134.md)
diff --git a/docs/pull-requests/pr-135.md b/docs/pull-requests/pr-135.md
new file mode 100644
index 0000000..47838ca
--- /dev/null
+++ b/docs/pull-requests/pr-135.md
@@ -0,0 +1,39 @@
+---
+type: pull_request
+state: closed (merged)
+branch: chore/sync-main-to-dev-33-1 → dev
+created: 2026-04-10T14:23:14Z
+updated: 2026-04-10T14:24:16Z
+author: vig-os-release-app[bot]
+author_url: https://github.com/vig-os-release-app[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/135
+comments: 0
+labels: none
+assignees: none
+milestone: none
+projects: none
+merged: 2026-04-10T14:24:15Z
+synced: 2026-04-11T04:22:02.460Z
+---
+
+# [PR 135](https://github.com/vig-os/devcontainer-smoke-test/pull/135) chore: sync dev with main
+
+Syncs `dev` with `main` (sync-main-to-dev workflow).
+
+
+---
+---
+
+## Commits
+
+### Commit 1: [9416934](https://github.com/vig-os/devcontainer-smoke-test/commit/9416934c2e11f8e2ccd3ba74c0fa03909a9945e0) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:13 PM
+chore: prepare release 0.3.3, 14 files modified (CHANGELOG.md)
+
+### Commit 2: [41fa9c3](https://github.com/vig-os/devcontainer-smoke-test/commit/41fa9c344433590ae272c1b3573268b56695bc08) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:16 PM
+chore: finalize release 0.3.3, 2 files modified (CHANGELOG.md)
+
+### Commit 3: [e9eae4a](https://github.com/vig-os/devcontainer-smoke-test/commit/e9eae4a53f0c13edab9e7de78cec948b09dca9ec) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 10, 2026 at 02:17 PM
+chore: sync issues and PRs, 260 files modified (docs/pull-requests/pr-130.md, docs/pull-requests/pr-131.md, docs/pull-requests/pr-132.md, docs/pull-requests/pr-133.md, docs/pull-requests/pr-134.md)
+
+### Commit 4: [7241038](https://github.com/vig-os/devcontainer-smoke-test/commit/72410387662cb2bdbd7f30241171d7d3b64bc9f8) by [vig-os-release-app[bot]](https://github.com/apps/vig-os-release-app) on April 10, 2026 at 02:21 PM
+chore: release 0.3.3 (#134), 266 files modified (.devcontainer/CHANGELOG.md, .vig-os, CHANGELOG.md, docs/pull-requests/pr-130.md, docs/pull-requests/pr-131.md, docs/pull-requests/pr-132.md, docs/pull-requests/pr-133.md, docs/pull-requests/pr-134.md)
diff --git a/docs/pull-requests/pr-136.md b/docs/pull-requests/pr-136.md
new file mode 100644
index 0000000..c30348f
--- /dev/null
+++ b/docs/pull-requests/pr-136.md
@@ -0,0 +1,79 @@
+---
+type: pull_request
+state: open
+branch: dependabot/pip/dev/pandas-gte-3.0.2 → dev
+created: 2026-04-13T05:26:24Z
+updated: 2026-04-13T05:26:25Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/136
+comments: 0
+labels: dependencies, python
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-14T04:45:20.800Z
+---
+
+# [PR 136](https://github.com/vig-os/devcontainer-smoke-test/pull/136) build(deps-dev): update pandas requirement from >=2.2 to >=3.0.2
+
+Updates the requirements on [pandas](https://github.com/pandas-dev/pandas) to permit the latest version.
+
+Release notes
+Sourced from pandas's releases.
+
+pandas 3.0.2
+We are pleased to announce the release of pandas 3.0.2.
+This is a patch release in the 3.0.x series and includes some regression fixes and bug fixes. We recommend that all users of the 3.0.x series upgrade to this version.
+See the full whatsnew for a list of all the changes.
+Pandas 3.0 supports Python 3.11 and higher.
+The release can be installed from PyPI:
+python -m pip install --upgrade pandas==3.0.*
+
+Or from conda-forge
+conda install -c conda-forge pandas=3.0
+
+Please report any issues with the release on the pandas issue tracker.
+Thanks to all the contributors who made this release possible.
+
+
+
+Commits
+
+ab90747 RLS: 3.0.2 (#64934)
+6f27013 Backport PR #64931 on branch 3.0.x (DOC/BLD: temporary disable upload of docs...
+48ddc60 Backport PR #64664 on branch 3.0.x (BUG: DataFrame.sum() crashes on empty Dat...
+8774488 [backport 3.0.x] PERF: fix slow python loop in validation for ArrowStringArra...
+33af6cc Backport PR #64133 on branch 3.0.x (BUG: str.find returns byte offset instead...
+4ef49d8 [backport 3.0.x] BUG: fix convert_dtypes dropping values from sliced mixed-dt...
+0668f34 [backport 3.0.x] BUG: Fix HDFStore.put with StringDtype columns and compressi...
+23f2f44 [backport 3.0.x] BUG: Suppress unnecessary RuntimeWarning in to_datetime with...
+83ba804 Backport PR #64886: BUG: Compute Variance of Complex Numbers Correctly (#64892)
+bb5ca1a Backport PR #64386 on branch 3.0.x (BUG: fix sort_index AssertionError with R...
+- Additional commits viewable in compare view
+
+
+
+
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+
+
+
diff --git a/docs/pull-requests/pr-137.md b/docs/pull-requests/pr-137.md
new file mode 100644
index 0000000..d295f73
--- /dev/null
+++ b/docs/pull-requests/pr-137.md
@@ -0,0 +1,152 @@
+---
+type: pull_request
+state: open
+branch: dependabot/pip/dev/ipykernel-gte-7.2.0 → dev
+created: 2026-04-13T05:26:29Z
+updated: 2026-04-13T05:26:30Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/137
+comments: 0
+labels: dependencies, python
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-14T04:45:19.786Z
+---
+
+# [PR 137](https://github.com/vig-os/devcontainer-smoke-test/pull/137) build(deps-dev): update ipykernel requirement from >=6.0 to >=7.2.0
+
+Updates the requirements on [ipykernel](https://github.com/ipython/ipykernel) to permit the latest version.
+
+Release notes
+Sourced from ipykernel's releases.
+
+v7.2.0
+7.2.0
+(Full Changelog)
+New features added
+
+Enhancements made
+
+Bugs fixed
+
+Maintenance and upkeep improvements
+
+Contributors to this release
+The following people contributed discussions, new ideas, code and documentation contributions, and review.
+See our definition of contributors.
+(GitHub contributors page for this release)
+@arjxn-py (activity) | @Carreau (activity) | @ccordoba12 (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @minrk (activity) | @newville (activity) | @SylvainCorlay (activity)
+
+
+
+Changelog
+Sourced from ipykernel's changelog.
+
+7.2.0
+(Full Changelog)
+New features added
+
+Enhancements made
+
+Bugs fixed
+
+Maintenance and upkeep improvements
+
+Contributors to this release
+The following people contributed discussions, new ideas, code and documentation contributions, and review.
+See our definition of contributors.
+(GitHub contributors page for this release)
+@arjxn-py (activity) | @Carreau (activity) | @ccordoba12 (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @minrk (activity) | @newville (activity) | @SylvainCorlay (activity)
+
+7.2.0a1
+(Full Changelog)
+New features added
+
+
+
+... (truncated)
+
+
+Commits
+
+4b37e75 Publish 7.2.0
+1630c4f Temporarily revert "Test changing base method to async after (#1464)" (#1493)
+8086199 Temporarily revert "Test changing base method to async after (#1464)"
+a2d47a2 chore: update pre-commit hooks (#1472)
+06c9aee Publish 7.2.0a1
+220a3c6 Made IOPubThread constructor backward compatible (#1492)
+dee781d Update pytest requirement from <9,>=7.0 to >=7.0,<10 in the actions group acr...
+56b2e29 Update pytest requirement in the actions group across 1 directory
+13e17df Advertizes kernel protocol 5.5 (#1488)
+59f0c65 Advertizes kernel protocol 5.5
+- Additional commits viewable in compare view
+
+
+
+
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+
+
+
diff --git a/docs/pull-requests/pr-138.md b/docs/pull-requests/pr-138.md
new file mode 100644
index 0000000..8ea2177
--- /dev/null
+++ b/docs/pull-requests/pr-138.md
@@ -0,0 +1,43 @@
+---
+type: pull_request
+state: open
+branch: dependabot/pip/dev/jupyter-gte-1.1.1 → dev
+created: 2026-04-13T05:26:30Z
+updated: 2026-04-13T05:26:31Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/138
+comments: 0
+labels: dependencies, python
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-14T04:45:18.738Z
+---
+
+# [PR 138](https://github.com/vig-os/devcontainer-smoke-test/pull/138) build(deps-dev): update jupyter requirement from >=1.0 to >=1.1.1
+
+Updates the requirements on [jupyter](https://jupyter.org) to permit the latest version.
+
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+
+
+
diff --git a/docs/pull-requests/pr-139.md b/docs/pull-requests/pr-139.md
new file mode 100644
index 0000000..709aa1b
--- /dev/null
+++ b/docs/pull-requests/pr-139.md
@@ -0,0 +1,89 @@
+---
+type: pull_request
+state: open
+branch: dependabot/pip/dev/scipy-gte-1.17.1 → dev
+created: 2026-04-13T05:26:38Z
+updated: 2026-04-13T05:26:39Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/139
+comments: 0
+labels: dependencies, python
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-14T04:45:17.657Z
+---
+
+# [PR 139](https://github.com/vig-os/devcontainer-smoke-test/pull/139) build(deps-dev): update scipy requirement from >=1.14 to >=1.17.1
+
+Updates the requirements on [scipy](https://github.com/scipy/scipy) to permit the latest version.
+
+Release notes
+Sourced from scipy's releases.
+
+SciPy 1.17.1 Release Notes
+SciPy 1.17.1 is a bug-fix release with no new features compared to 1.17.0.
+Authors
+
+- Name (commits)
+- Evgeni Burovski (5)
+- Lucas Colley (1)
+- Christoph Gohlke (1)
+- Ralf Gommers (6)
+- Matt Haberland (5)
+- Matthias Koeppe (1)
+- Nick ODell (1)
+- Ilhan Polat (10)
+- Tyler Reddy (44)
+- Martin Schuck (3)
+- Dan Schult (3)
+- stratakis (1) +
+- ਗਗਨਦੀਪ ਸਿੰਘ (Gagandeep Singh) (1)
+
+A total of 13 people contributed to this release.
+People with a "+" by their names contributed a patch for the first time.
+This list of names is automatically generated, and may not be fully complete.
+Complete issue list, PR list, and release asset hashes are available in the associated README.txt.
+
+
+
+Commits
+
+527eb7f REL: 1.17.1 release commit [wheel build]
+f11663b Merge pull request #24584 from tylerjereddy/treddy_prep_1.17.1
+2c49e68 DOC: PR 24584 revisions
+400fa15 safely convert index dtypes to intc for csgraph and superLU
+8c70404 MAINT: PR 24584 revisions [wheel build]
+6dda8c1 BUG: PR 24584 revisions
+4a187e5 DOC: PR 24584 revisions
+463ee9f ENH: linalg/inv: re-enable overwrite_a for 2D inputs (#24442)
+df746ee BUG: linalg: restore dtypes in inv, solve, det
+246bfee MAINT:optimize: Enable multi-phase init to DIRECT
+- Additional commits viewable in compare view
+
+
+
+
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+
+
+
diff --git a/docs/pull-requests/pr-140.md b/docs/pull-requests/pr-140.md
new file mode 100644
index 0000000..f763d17
--- /dev/null
+++ b/docs/pull-requests/pr-140.md
@@ -0,0 +1,132 @@
+---
+type: pull_request
+state: open
+branch: dependabot/pip/dev/rich-gte-15.0.0 → dev
+created: 2026-04-13T05:26:43Z
+updated: 2026-04-13T05:26:44Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/140
+comments: 0
+labels: dependencies, python
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-14T04:45:16.667Z
+---
+
+# [PR 140](https://github.com/vig-os/devcontainer-smoke-test/pull/140) build(deps-dev): update rich requirement from >=13.0.0 to >=15.0.0
+
+Updates the requirements on [rich](https://github.com/Textualize/rich) to permit the latest version.
+
+Release notes
+Sourced from rich's releases.
+
+The So Long 3.8 Release
+A few fixes. The major version bump is to honor the passing of 3.8 support which reached its EOL in October 7, 2024
+[15.0.0] - 2026-04-12
+Changed
+
+- Breaking change: Dropped support for Python3.8
+
+Fixed
+
+
+
+
+Changelog
+Sourced from rich's changelog.
+
+[15.0.0] - 2026-04-12
+Changed
+
+- Breaking change: Dropped support for Python3.8
+
+Fixed
+
+[14.3.4] - 2026-04-11
+Changed
+
+[14.3.3] - 2026-02-19
+Fixed
+
+[14.3.2] - 2026-02-01
+Fixed
+
+[14.3.1] - 2026-01-24
+Fixed
+
+[14.3.0] - 2026-01-24
+Fixed
+
+Added
+
+
+... (truncated)
+
+
+Commits
+
+
+
+
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
+- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
+- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
+
+
+
diff --git a/docs/pull-requests/pr-141.md b/docs/pull-requests/pr-141.md
new file mode 100644
index 0000000..5b79985
--- /dev/null
+++ b/docs/pull-requests/pr-141.md
@@ -0,0 +1,213 @@
+---
+type: pull_request
+state: closed
+branch: dependabot/github_actions/dev/actions-minor-patch-630f6bf131 → dev
+created: 2026-04-13T05:26:48Z
+updated: 2026-04-20T05:31:00Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/141
+comments: 1
+labels: dependencies, github_actions
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-21T04:48:14.211Z
+---
+
+# [PR 141](https://github.com/vig-os/devcontainer-smoke-test/pull/141) ci(deps): bump the actions-minor-patch group across 1 directory with 2 updates
+
+Bumps the actions-minor-patch group with 2 updates in the / directory: [actions/create-github-app-token](https://github.com/actions/create-github-app-token) and [actions/cache](https://github.com/actions/cache).
+
+Updates `actions/create-github-app-token` from 3.0.0 to 3.1.1
+
+Release notes
+Sourced from actions/create-github-app-token's releases.
+
+v3.1.1
+3.1.1 (2026-04-11)
+Bug Fixes
+
+- improve error message when app identifier is empty (#362) (07e2b76), closes #249
+
+v3.1.0
+3.1.0 (2026-04-11)
+Bug Fixes
+
+- deps: bump p-retry from 7.1.1 to 8.0.0 (#357) (3bbe07d)
+
+Features
+
+
+
+
+Commits
+
+1b10c78 build(release): 3.1.1 [skip ci]
+07e2b76 fix: improve error message when app identifier is empty (#362)
+ea01216 ci: remove publish-immutable-action workflow (#361)
+7bd0371 build(release): 3.1.0 [skip ci]
+e6bd4e6 feat: add client-id input and deprecate app-id (#353)
+076e948 feat: update permission inputs (#358)
+3bbe07d fix(deps): bump p-retry from 7.1.1 to 8.0.0 (#357)
+28a99e3 build(deps-dev): bump c8 from 10.1.3 to 11.0.0
+4df5060 build(deps-dev): bump open-cli from 8.0.0 to 9.0.0
+4843c53 build(deps-dev): bump the development-dependencies group with 3 updates
+- See full diff in compare view
+
+
+
+
+Updates `actions/cache` from 5.0.3 to 5.0.4
+
+Release notes
+Sourced from actions/cache's releases.
+
+v5.0.4
+What's Changed
+
+New Contributors
+
+Full Changelog: https://github.com/actions/cache/compare/v5...v5.0.4
+
+
+
+Changelog
+Sourced from actions/cache's changelog.
+
+Releases
+How to prepare a release
+
+[!NOTE]
+Relevant for maintainers with write access only.
+
+
+- Switch to a new branch from
main.
+- Run
npm test to ensure all tests are passing.
+- Update the version in
https://github.com/actions/cache/blob/main/package.json.
+- Run
npm run build to update the compiled files.
+- Update this
https://github.com/actions/cache/blob/main/RELEASES.md with the new version and changes in the ## Changelog section.
+- Run
licensed cache to update the license report.
+- Run
licensed status and resolve any warnings by updating the https://github.com/actions/cache/blob/main/.licensed.yml file with the exceptions.
+- Commit your changes and push your branch upstream.
+- Open a pull request against
main and get it reviewed and merged.
+- Draft a new release https://github.com/actions/cache/releases use the same version number used in
package.json
+
+- Create a new tag with the version number.
+- Auto generate release notes and update them to match the changes you made in
RELEASES.md.
+- Toggle the set as the latest release option.
+- Publish the release.
+
+
+- Navigate to https://github.com/actions/cache/actions/workflows/release-new-action-version.yml
+
+- There should be a workflow run queued with the same version number.
+- Approve the run to publish the new version and update the major tags for this action.
+
+
+
+Changelog
+5.0.4
+
+- Bump
minimatch to v3.1.5 (fixes ReDoS via globstar patterns)
+- Bump
undici to v6.24.1 (WebSocket decompression bomb protection, header validation fixes)
+- Bump
fast-xml-parser to v5.5.6
+
+5.0.3
+
+5.0.2
+
+- Bump
@actions/cache to v5.0.3 #1692
+
+5.0.1
+
+- Update
@azure/storage-blob to ^12.29.1 via @actions/cache@5.0.1 #1685
+
+5.0.0
+
+[!IMPORTANT]
+actions/cache@v5 runs on the Node.js 24 runtime and requires a minimum Actions Runner version of 2.327.1.
+
+
+
+... (truncated)
+
+
+Commits
+
+6682284 Merge pull request #1738 from actions/prepare-v5.0.4
+e340396 Update RELEASES
+8a67110 Add licenses
+1865903 Update dependencies & patch security vulnerabilities
+5656298 Merge pull request #1722 from RyPeck/patch-1
+4e380d1 Fix cache key in examples.md for bun.lock
+b7e8d49 Merge pull request #1701 from actions/Link-/fix-proxy-integration-tests
+984a21b Add traffic sanity check step
+acf2f1f Fix resolution
+95a07c5 Add wait for proxy
+- Additional commits viewable in compare view
+
+
+
+
+
+Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
+
+[//]: # (dependabot-automerge-start)
+[//]: # (dependabot-automerge-end)
+
+---
+
+
+Dependabot commands and options
+
+
+You can trigger Dependabot actions by commenting on this PR:
+- `@dependabot rebase` will rebase this PR
+- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
+- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
+- `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
+- `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
+- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
+- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
+- `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
+
+
+
+
+
+---
+---
+
+# Comments (1)
+
+## [Comment #1](https://github.com/vig-os/devcontainer-smoke-test/pull/141#issuecomment-4278071090) by [@dependabot[bot]](https://github.com/apps/dependabot)
+
+_Posted on April 20, 2026 at 05:30 AM_
+
+Looks like these dependencies are updatable in another way, so this is no longer needed.
+
+---
+---
+
+## Commits
+
+### Commit 1: [6f5f0cc](https://github.com/vig-os/devcontainer-smoke-test/commit/6f5f0cc0cc5c2d41dcdb3a0870ae4ea0dcc35b12) by [dependabot[bot]](https://github.com/apps/dependabot) on April 13, 2026 at 05:26 AM
+ci(deps): bump the actions-minor-patch group across 1 directory with 2 updates, 56 files modified
diff --git a/docs/pull-requests/pr-142.md b/docs/pull-requests/pr-142.md
new file mode 100644
index 0000000..e5a1f2d
--- /dev/null
+++ b/docs/pull-requests/pr-142.md
@@ -0,0 +1,275 @@
+---
+type: pull_request
+state: open
+branch: dependabot/github_actions/dev/actions-minor-patch-b9bae8ce07 → dev
+created: 2026-04-20T05:31:03Z
+updated: 2026-04-27T05:34:01Z
+author: dependabot[bot]
+author_url: https://github.com/dependabot[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/142
+comments: 0
+labels: dependencies, github_actions
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-28T05:30:32.773Z
+---
+
+# [PR 142](https://github.com/vig-os/devcontainer-smoke-test/pull/142) ci(deps): bump the actions-minor-patch group across 1 directory with 3 updates
+
+Bumps the actions-minor-patch group with 3 updates in the / directory: [github/codeql-action](https://github.com/github/codeql-action), [actions/create-github-app-token](https://github.com/actions/create-github-app-token) and [actions/cache](https://github.com/actions/cache).
+
+Updates `github/codeql-action` from 4.35.1 to 4.35.2
+
+Release notes
+Sourced from github/codeql-action's releases.
+
+v4.35.2
+
+- The undocumented TRAP cache cleanup feature that could be enabled using the
CODEQL_ACTION_CLEANUP_TRAP_CACHES environment variable is deprecated and will be removed in May 2026. If you are affected by this, we recommend disabling TRAP caching by passing the trap-caching: false input to the init Action. #3795
+- The Git version 2.36.0 requirement for improved incremental analysis now only applies to repositories that contain submodules. #3789
+- Python analysis on GHES no longer extracts the standard library, relying instead on models of the standard library. This should result in significantly faster extraction and analysis times, while the effect on alerts should be minimal. #3794
+- Fixed a bug in the validation of OIDC configurations for private registries that was added in CodeQL Action 4.33.0 / 3.33.0. #3807
+- Update default CodeQL bundle version to 2.25.2. #3823
+
+
+
+
+Changelog
+Sourced from github/codeql-action's changelog.
+
+CodeQL Action Changelog
+See the releases page for the relevant changes to the CodeQL CLI and language packs.
+[UNRELEASED]
+No user facing changes.
+4.35.2 - 15 Apr 2026
+
+- The undocumented TRAP cache cleanup feature that could be enabled using the
CODEQL_ACTION_CLEANUP_TRAP_CACHES environment variable is deprecated and will be removed in May 2026. If you are affected by this, we recommend disabling TRAP caching by passing the trap-caching: false input to the init Action. #3795
+- The Git version 2.36.0 requirement for improved incremental analysis now only applies to repositories that contain submodules. #3789
+- Python analysis on GHES no longer extracts the standard library, relying instead on models of the standard library. This should result in significantly faster extraction and analysis times, while the effect on alerts should be minimal. #3794
+- Fixed a bug in the validation of OIDC configurations for private registries that was added in CodeQL Action 4.33.0 / 3.33.0. #3807
+- Update default CodeQL bundle version to 2.25.2. #3823
+
+4.35.1 - 27 Mar 2026
+
+4.35.0 - 27 Mar 2026
+
+4.34.1 - 20 Mar 2026
+
+- Downgrade default CodeQL bundle version to 2.24.3 due to issues with a small percentage of Actions and JavaScript analyses. #3762
+
+4.34.0 - 20 Mar 2026
+
+- Added an experimental change which disables TRAP caching when improved incremental analysis is enabled, since improved incremental analysis supersedes TRAP caching. This will improve performance and reduce Actions cache usage. We expect to roll this change out to everyone in March. #3569
+- We are rolling out improved incremental analysis to C/C++ analyses that use build mode
none. We expect this rollout to be complete by the end of April 2026. #3584
+- Update default CodeQL bundle version to 2.25.0. #3585
+
+4.33.0 - 16 Mar 2026
+
+-
+
Upcoming change: Starting April 2026, the CodeQL Action will skip collecting file coverage information on pull requests to improve analysis performance. File coverage information will still be computed on non-PR analyses. Pull request analyses will log a warning about this upcoming change. #3562
+To opt out of this change:
+
+- Repositories owned by an organization: Create a custom repository property with the name
github-codeql-file-coverage-on-prs and the type "True/false", then set this property to true in the repository's settings. For more information, see Managing custom properties for repositories in your organization. Alternatively, if you are using an advanced setup workflow, you can set the CODEQL_ACTION_FILE_COVERAGE_ON_PRS environment variable to true in your workflow.
+- User-owned repositories using default setup: Switch to an advanced setup workflow and set the
CODEQL_ACTION_FILE_COVERAGE_ON_PRS environment variable to true in your workflow.
+- User-owned repositories using advanced setup: Set the
CODEQL_ACTION_FILE_COVERAGE_ON_PRS environment variable to true in your workflow.
+
+
+-
+
Fixed a bug which caused the CodeQL Action to fail loading repository properties if a "Multi select" repository property was configured for the repository. #3557
+
+-
+
The CodeQL Action now loads custom repository properties on GitHub Enterprise Server, enabling the customization of features such as github-codeql-disable-overlay that was previously only available on GitHub.com. #3559
+
+-
+
Once private package registries can be configured with OIDC-based authentication for organizations, the CodeQL Action will now be able to accept such configurations. #3563
+
+-
+
Fixed the retry mechanism for database uploads. Previously this would fail with the error "Response body object should not be disturbed or locked". #3564
+
+-
+
A warning is now emitted if the CodeQL Action detects a repository property whose name suggests that it relates to the CodeQL Action, but which is not one of the properties recognised by the current version of the CodeQL Action. #3570
+
+
+4.32.6 - 05 Mar 2026
+
+
+... (truncated)
+
+
+Commits
+
+95e58e9 Merge pull request #3824 from github/update-v4.35.2-d2e135a73
+6f31bfe Update changelog for v4.35.2
+d2e135a Merge pull request #3823 from github/update-bundle/codeql-bundle-v2.25.2
+60abb65 Add changelog note
+5a0a562 Update default bundle to codeql-bundle-v2.25.2
+6521697 Merge pull request #3820 from github/dependabot/github_actions/dot-github/wor...
+3c45af2 Merge pull request #3821 from github/dependabot/npm_and_yarn/npm-minor-345b93...
+f1c3393 Rebuild
+1024fc4 Rebuild
+9dd4cfe Bump the npm-minor group across 1 directory with 6 updates
+- Additional commits viewable in compare view
+
+
+
+
+Updates `actions/create-github-app-token` from 3.0.0 to 3.1.1
+
+Release notes
+Sourced from actions/create-github-app-token's releases.
+
+v3.1.1
+3.1.1 (2026-04-11)
+Bug Fixes
+
+- improve error message when app identifier is empty (#362) (07e2b76), closes #249
+
+v3.1.0
+3.1.0 (2026-04-11)
+Bug Fixes
+
+- deps: bump p-retry from 7.1.1 to 8.0.0 (#357) (3bbe07d)
+
+Features
+
+
+
+
+Commits
+
+1b10c78 build(release): 3.1.1 [skip ci]
+07e2b76 fix: improve error message when app identifier is empty (#362)
+ea01216 ci: remove publish-immutable-action workflow (#361)
+7bd0371 build(release): 3.1.0 [skip ci]
+e6bd4e6 feat: add client-id input and deprecate app-id (#353)
+076e948 feat: update permission inputs (#358)
+3bbe07d fix(deps): bump p-retry from 7.1.1 to 8.0.0 (#357)
+28a99e3 build(deps-dev): bump c8 from 10.1.3 to 11.0.0
+4df5060 build(deps-dev): bump open-cli from 8.0.0 to 9.0.0
+4843c53 build(deps-dev): bump the development-dependencies group with 3 updates
+- See full diff in compare view
+
+
+
+
+Updates `actions/cache` from 5.0.3 to 5.0.5
+
+Release notes
+Sourced from actions/cache's releases.
+
+v5.0.5
+What's Changed
+
+Full Changelog: https://github.com/actions/cache/compare/v5...v5.0.5
+v5.0.4
+What's Changed
+
+New Contributors
+
+Full Changelog: https://github.com/actions/cache/compare/v5...v5.0.4
+
+
+
+Changelog
+Sourced from actions/cache's changelog.
+
+Releases
+How to prepare a release
+
+[!NOTE]
+Relevant for maintainers with write access only.
+
+
+- Switch to a new branch from
main.
+- Run
npm test to ensure all tests are passing.
+- Update the version in
https://github.com/actions/cache/blob/main/package.json.
+- Run
npm run build to update the compiled files.
+- Update this
https://github.com/actions/cache/blob/main/RELEASES.md with the new version and changes in the ## Changelog section.
+- Run
licensed cache to update the license report.
+- Run
licensed status and resolve any warnings by updating the https://github.com/actions/cache/blob/main/.licensed.yml file with the exceptions.
+- Commit your changes and push your branch upstream.
+- Open a pull request against
main and get it reviewed and merged.
+- Draft a new release https://github.com/actions/cache/releases use the same version number used in
package.json
+
+- Create a new tag with the version number.
+- Auto generate release notes and update them to match the changes you made in
RELEASES.md.
+- Toggle the set as the latest release option.
+- Publish the release.
+
+
+- Navigate to https://github.com/actions/cache/actions/workflows/release-new-action-version.yml
+
+- There should be a workflow run queued with the same version number.
+- Approve the run to publish the new version and update the major tags for this action.
+
+
+
+Changelog
+5.0.4
+
+- Bump
minimatch to v3.1.5 (fixes ReDoS via globstar patterns)
+- Bump
undici to v6.24.1 (WebSocket decompression bomb protection, header validation fixes)
+- Bump
fast-xml-parser to v5.5.6
+
+5.0.3
+
+5.0.2
+
+- Bump
@actions/cache to v5.0.3 #1692
+
+5.0.1
+
+- Update
@azure/storage-blob to ^12.29.1 via @actions/cache@5.0.1 #1685
+
+5.0.0
+
+[!IMPORTANT]
+actions/cache@v5 runs on the Node.js 24 runtime and requires a minimum Actions Runner version of 2.327.1.
+
+
+
+... (truncated)
+
+
+Commits
+
+27d5ce7 Merge pull request #1747 from actions/yacaovsnc/update-dependency
+f280785 licensed changes
+619aeb1 npm run build generated dist files
+bcf16c2 Update ts-http-runtime to 0.3.5
+6682284 Merge pull request #1738 from actions/prepare-v5.0.4
+e340396 Update RELEASES
+8a67110 Add licenses
+1865903 Update dependencies & patch security vulnerabilities
+5656298 Merge pull request #1722 from RyPeck/patch-1
+4e380d1 Fix cache key in examples.md for bun.lock
+- Additional commits viewable in compare view
+
+
+
+
diff --git a/docs/pull-requests/pr-143.md b/docs/pull-requests/pr-143.md
new file mode 100644
index 0000000..ebc4045
--- /dev/null
+++ b/docs/pull-requests/pr-143.md
@@ -0,0 +1,34 @@
+---
+type: pull_request
+state: closed (merged)
+branch: chore/deploy-0.3.4-rc1 → dev
+created: 2026-04-29T10:35:45Z
+updated: 2026-04-29T10:36:49Z
+author: vig-os-release-app[bot]
+author_url: https://github.com/vig-os-release-app[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/143
+comments: 0
+labels: deploy
+assignees: none
+milestone: none
+projects: none
+merged: 2026-04-29T10:36:47Z
+synced: 2026-04-29T14:17:37.387Z
+---
+
+# [PR 143](https://github.com/vig-os/devcontainer-smoke-test/pull/143) chore: deploy 0.3.4-rc1
+
+Automated smoke-test deployment commit created by repository_dispatch.
+
+- Dispatch tag: 0.3.4-rc1
+- Branch: chore/deploy-0.3.4-rc1
+- Target: dev
+
+
+---
+---
+
+## Commits
+
+### Commit 1: [f1d8620](https://github.com/vig-os/devcontainer-smoke-test/commit/f1d8620411d71c198b42d6a70beb4b717e71567f) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 29, 2026 at 10:35 AM
+chore: deploy 0.3.4-rc1, 201 files modified (.devcontainer/CHANGELOG.md, .github/renovate-default.json, .github/workflows/promote-release.yml, .vig-os, CHANGELOG.md, uv.lock)
diff --git a/docs/pull-requests/pr-144.md b/docs/pull-requests/pr-144.md
new file mode 100644
index 0000000..1920476
--- /dev/null
+++ b/docs/pull-requests/pr-144.md
@@ -0,0 +1,75 @@
+---
+type: pull_request
+state: closed
+branch: release/0.3.4 → main
+created: 2026-04-29T10:38:35Z
+updated: 2026-04-29T14:12:02Z
+author: vig-os-release-app[bot]
+author_url: https://github.com/vig-os-release-app[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/144
+comments: 0
+labels: release-kind:candidate
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-29T14:17:34.707Z
+---
+
+# [PR 144](https://github.com/vig-os/devcontainer-smoke-test/pull/144) chore: release 0.3.4
+
+# Release 0.3.4
+
+This PR prepares release 0.3.4 for merge to main.
+
+## [0.3.4] - TBD
+
+### Added
+
+- **Renovate config validation on pull requests** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Workflow discovers tracked `renovate*.json` files (excluding `assets/workspace/renovate.json`, whose `extends` uses an unresolved template placeholder) and runs `renovate-config-validator --strict` on the rest when renovate JSON changes
+ - `just test-renovate` recipe mirrors the workflow locally and is included in `just test`
+
+### Changed
+
+- **Bump expected tool versions in image tests**
+ - `gh` 2.89 → 2.92, `just` 1.49 → 1.50, `cargo-binstall` 1.17 → 1.18 to match the latest upstream releases the image now installs
+
+### Fixed
+
+- **Renovate preset blocked all dependency updates** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Split Python `packageRules` so `matchUpdateTypes` and `rangeStrategy` are not combined in one rule; rename `baseBranches` to `baseBranchPatterns`
+ - Remove invalid `uv` from `enabledManagers` (`pep621` continues to handle `pyproject.toml` and `uv.lock`)
+
+
+
+---
+---
+
+## Commits
+
+### Commit 1: [92d89bc](https://github.com/vig-os/devcontainer-smoke-test/commit/92d89bc4fd7a343bfa15466ddf6ffca867830d99) by [vig-os-release-app[bot]](https://github.com/apps/vig-os-release-app) on April 10, 2026 at 02:24 PM
+chore: sync dev with main (#135), 276 files modified (CHANGELOG.md, docs/pull-requests/pr-130.md, docs/pull-requests/pr-131.md, docs/pull-requests/pr-132.md, docs/pull-requests/pr-133.md, docs/pull-requests/pr-134.md)
+
+### Commit 2: [7ebba2f](https://github.com/vig-os/devcontainer-smoke-test/commit/7ebba2fd3207d94a15b577e14c96158b531a128a) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 11, 2026 at 04:22 AM
+chore: sync issues and PRs, 73 files modified (docs/pull-requests/pr-134.md, docs/pull-requests/pr-135.md)
+
+### Commit 3: [c325770](https://github.com/vig-os/devcontainer-smoke-test/commit/c325770d4b39b129f29799e074c7c9ccf00d47c8) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 14, 2026 at 04:45 AM
+chore: sync issues and PRs, 715 files modified
+
+### Commit 4: [545715f](https://github.com/vig-os/devcontainer-smoke-test/commit/545715fb5a10bb922df84e1c8a81a0b794561c20) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 21, 2026 at 04:48 AM
+chore: sync issues and PRs, 327 files modified (docs/pull-requests/pr-141.md, docs/pull-requests/pr-142.md)
+
+### Commit 5: [8df69c3](https://github.com/vig-os/devcontainer-smoke-test/commit/8df69c381896cb34a8a0f37d12d952796dbb2a69) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 28, 2026 at 05:30 AM
+chore: sync issues and PRs, 28 files modified (docs/pull-requests/pr-142.md)
+
+### Commit 6: [f1d8620](https://github.com/vig-os/devcontainer-smoke-test/commit/f1d8620411d71c198b42d6a70beb4b717e71567f) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 29, 2026 at 10:35 AM
+chore: deploy 0.3.4-rc1, 201 files modified (.devcontainer/CHANGELOG.md, .github/renovate-default.json, .github/workflows/promote-release.yml, .vig-os, CHANGELOG.md, uv.lock)
+
+### Commit 7: [28a059f](https://github.com/vig-os/devcontainer-smoke-test/commit/28a059f23be2480f27165f5379d19b8f5147f131) by [vig-os-release-app[bot]](https://github.com/apps/vig-os-release-app) on April 29, 2026 at 10:36 AM
+chore: deploy 0.3.4-rc1 (#143), 201 files modified (.devcontainer/CHANGELOG.md, .github/renovate-default.json, .github/workflows/promote-release.yml, .vig-os, CHANGELOG.md, uv.lock)
+
+### Commit 8: [1ae88bc](https://github.com/vig-os/devcontainer-smoke-test/commit/1ae88bc17413b95b5b3baf73c61d24590195b2c1) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 29, 2026 at 10:38 AM
+chore: freeze changelog for release 0.3.4, 14 files modified (CHANGELOG.md)
+
+### Commit 9: [0bbf69e](https://github.com/vig-os/devcontainer-smoke-test/commit/0bbf69e47b5bc18c5a308b4564c72ea7e1cda97a) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 29, 2026 at 10:38 AM
+chore: prepare release 0.3.4, 14 files modified (CHANGELOG.md)
diff --git a/docs/pull-requests/pr-145.md b/docs/pull-requests/pr-145.md
new file mode 100644
index 0000000..4f32539
--- /dev/null
+++ b/docs/pull-requests/pr-145.md
@@ -0,0 +1,34 @@
+---
+type: pull_request
+state: closed (merged)
+branch: chore/deploy-0.3.4 → dev
+created: 2026-04-29T14:10:19Z
+updated: 2026-04-29T14:11:40Z
+author: vig-os-release-app[bot]
+author_url: https://github.com/vig-os-release-app[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/145
+comments: 0
+labels: deploy
+assignees: none
+milestone: none
+projects: none
+merged: 2026-04-29T14:11:39Z
+synced: 2026-04-29T14:17:36.093Z
+---
+
+# [PR 145](https://github.com/vig-os/devcontainer-smoke-test/pull/145) chore: deploy 0.3.4
+
+Automated smoke-test deployment commit created by repository_dispatch.
+
+- Dispatch tag: 0.3.4
+- Branch: chore/deploy-0.3.4
+- Target: dev
+
+
+---
+---
+
+## Commits
+
+### Commit 1: [b33b9b2](https://github.com/vig-os/devcontainer-smoke-test/commit/b33b9b244fb1e3b476e68d9e2380e76f1d859a96) by [commit-action-bot[bot]](https://github.com/apps/commit-action-bot) on April 29, 2026 at 02:10 PM
+chore: deploy 0.3.4, 18 files modified (.devcontainer/CHANGELOG.md, .vig-os, CHANGELOG.md)
diff --git a/docs/pull-requests/pr-146.md b/docs/pull-requests/pr-146.md
new file mode 100644
index 0000000..627efa7
--- /dev/null
+++ b/docs/pull-requests/pr-146.md
@@ -0,0 +1,42 @@
+---
+type: pull_request
+state: open
+branch: release/0.3.4 → main
+created: 2026-04-29T14:13:25Z
+updated: 2026-04-29T14:16:25Z
+author: vig-os-release-app[bot]
+author_url: https://github.com/vig-os-release-app[bot]
+url: https://github.com/vig-os/devcontainer-smoke-test/pull/146
+comments: 0
+labels: release-kind:final
+assignees: none
+milestone: none
+projects: none
+synced: 2026-04-29T14:17:32.774Z
+---
+
+# [PR 146](https://github.com/vig-os/devcontainer-smoke-test/pull/146) chore: release 0.3.4
+
+# Release 0.3.4
+
+This PR prepares release 0.3.4 for merge to main.
+
+## [0.3.4] - TBD
+
+### Added
+
+- **Renovate config validation on pull requests** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Workflow discovers tracked `renovate*.json` files (excluding `assets/workspace/renovate.json`, whose `extends` uses an unresolved template placeholder) and runs `renovate-config-validator --strict` on the rest when renovate JSON changes
+ - `just test-renovate` recipe mirrors the workflow locally and is included in `just test`
+
+### Changed
+
+- **Bump expected tool versions in image tests**
+ - `gh` 2.89 → 2.92, `just` 1.49 → 1.50, `cargo-binstall` 1.17 → 1.18 to match the latest upstream releases the image now installs
+
+### Fixed
+
+- **Renovate preset blocked all dependency updates** ([#520](https://github.com/vig-os/devcontainer/issues/520))
+ - Split Python `packageRules` so `matchUpdateTypes` and `rangeStrategy` are not combined in one rule; rename `baseBranches` to `baseBranchPatterns`
+ - Remove invalid `uv` from `enabledManagers` (`pep621` continues to handle `pyproject.toml` and `uv.lock`)
+
diff --git a/uv.lock b/uv.lock
index 3aac644..540a312 100644
--- a/uv.lock
+++ b/uv.lock
@@ -156,11 +156,11 @@ css = [
[[package]]
name = "certifi"
-version = "2026.2.25"
+version = "2026.4.22"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" },
+ { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" },
]
[[package]]
@@ -686,11 +686,11 @@ wheels = [
[[package]]
name = "idna"
-version = "3.11"
+version = "3.13"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/762dfb036166873f0059f3b7de4565e1b5bc3d6f28a414c13da27e442f99/idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242", size = 194210, upload-time = "2026-04-22T16:42:42.314Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
+ { url = "https://files.pythonhosted.org/packages/5d/13/ad7d7ca3808a898b4612b6fe93cde56b53f3034dcde235acb1f0e1df24c6/idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3", size = 68629, upload-time = "2026-04-22T16:42:40.909Z" },
]
[[package]]
@@ -728,7 +728,7 @@ wheels = [
[[package]]
name = "ipython"
-version = "9.12.0"
+version = "9.13.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -738,13 +738,14 @@ dependencies = [
{ name = "matplotlib-inline" },
{ name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" },
{ name = "prompt-toolkit" },
+ { name = "psutil" },
{ name = "pygments" },
{ name = "stack-data" },
{ name = "traitlets" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/3a/73/7114f80a8f9cabdb13c27732dce24af945b2923dcab80723602f7c8bc2d8/ipython-9.12.0.tar.gz", hash = "sha256:01daa83f504b693ba523b5a407246cabde4eb4513285a3c6acaff11a66735ee4", size = 4428879, upload-time = "2026-03-27T09:42:45.312Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/cd/c4/87cda5842cf5c31837c06ddb588e11c3c35d8ece89b7a0108c06b8c9b00a/ipython-9.13.0.tar.gz", hash = "sha256:7e834b6afc99f020e3f05966ced34792f40267d64cb1ea9043886dab0dde5967", size = 4430549, upload-time = "2026-04-24T12:24:55.221Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/59/22/906c8108974c673ebef6356c506cebb6870d48cedea3c41e949e2dd556bb/ipython-9.12.0-py3-none-any.whl", hash = "sha256:0f2701e8ee86e117e37f50563205d36feaa259d2e08d4a6bc6b6d74b18ce128d", size = 625661, upload-time = "2026-03-27T09:42:42.831Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/86/3060e8029b7cc505cce9a0137431dda81d0a3fde93a8f0f50ee0bf37a795/ipython-9.13.0-py3-none-any.whl", hash = "sha256:57f9d4639e20818d328d287c7b549af3d05f12486ea8f2e7f73e52a36ec4d201", size = 627274, upload-time = "2026-04-24T12:24:53.038Z" },
]
[[package]]
@@ -936,7 +937,7 @@ wheels = [
[[package]]
name = "jupyter-events"
-version = "0.12.0"
+version = "0.12.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "jsonschema", extra = ["format-nongpl"] },
@@ -948,9 +949,9 @@ dependencies = [
{ name = "rfc3986-validator" },
{ name = "traitlets" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/18/f8/475c4241b2b75af0deaae453ed003c6c851766dbc44d332d8baf245dc931/jupyter_events-0.12.1.tar.gz", hash = "sha256:faff25f77218335752f35f23c5fe6e4a392a7bd99a5939ccb9b8fbf594636cf3", size = 62854, upload-time = "2026-04-20T23:17:50.66Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/6c/6fcde0c8f616ed360ffd3587f7db9e225a7e62b583a04494d2f069cf64ea/jupyter_events-0.12.1-py3-none-any.whl", hash = "sha256:c366585253f537a627da52fa7ca7410c5b5301fe893f511e7b077c2d93ec8bcf", size = 19512, upload-time = "2026-04-20T23:17:48.927Z" },
]
[[package]]
@@ -1239,7 +1240,7 @@ wheels = [
[[package]]
name = "matplotlib"
-version = "3.10.8"
+version = "3.10.9"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "contourpy" },
@@ -1252,43 +1253,43 @@ dependencies = [
{ name = "pyparsing" },
{ name = "python-dateutil" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/8a/76/d3c6e3a13fe484ebe7718d14e269c9569c4eb0020a968a327acb3b9a8fe6/matplotlib-3.10.8.tar.gz", hash = "sha256:2299372c19d56bcd35cf05a2738308758d32b9eaed2371898d8f5bd33f084aa3", size = 34806269, upload-time = "2025-12-10T22:56:51.155Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/9e/67/f997cdcbb514012eb0d10cd2b4b332667997fb5ebe26b8d41d04962fa0e6/matplotlib-3.10.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:64fcc24778ca0404ce0cb7b6b77ae1f4c7231cdd60e6778f999ee05cbd581b9a", size = 8260453, upload-time = "2025-12-10T22:55:30.709Z" },
- { url = "https://files.pythonhosted.org/packages/7e/65/07d5f5c7f7c994f12c768708bd2e17a4f01a2b0f44a1c9eccad872433e2e/matplotlib-3.10.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9a5ca4ac220a0cdd1ba6bcba3608547117d30468fefce49bb26f55c1a3d5c58", size = 8148321, upload-time = "2025-12-10T22:55:33.265Z" },
- { url = "https://files.pythonhosted.org/packages/3e/f3/c5195b1ae57ef85339fd7285dfb603b22c8b4e79114bae5f4f0fcf688677/matplotlib-3.10.8-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ab4aabc72de4ff77b3ec33a6d78a68227bf1123465887f9905ba79184a1cc04", size = 8716944, upload-time = "2025-12-10T22:55:34.922Z" },
- { url = "https://files.pythonhosted.org/packages/00/f9/7638f5cc82ec8a7aa005de48622eecc3ed7c9854b96ba15bd76b7fd27574/matplotlib-3.10.8-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:24d50994d8c5816ddc35411e50a86ab05f575e2530c02752e02538122613371f", size = 9550099, upload-time = "2025-12-10T22:55:36.789Z" },
- { url = "https://files.pythonhosted.org/packages/57/61/78cd5920d35b29fd2a0fe894de8adf672ff52939d2e9b43cb83cd5ce1bc7/matplotlib-3.10.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:99eefd13c0dc3b3c1b4d561c1169e65fe47aab7b8158754d7c084088e2329466", size = 9613040, upload-time = "2025-12-10T22:55:38.715Z" },
- { url = "https://files.pythonhosted.org/packages/30/4e/c10f171b6e2f44d9e3a2b96efa38b1677439d79c99357600a62cc1e9594e/matplotlib-3.10.8-cp312-cp312-win_amd64.whl", hash = "sha256:dd80ecb295460a5d9d260df63c43f4afbdd832d725a531f008dad1664f458adf", size = 8142717, upload-time = "2025-12-10T22:55:41.103Z" },
- { url = "https://files.pythonhosted.org/packages/f1/76/934db220026b5fef85f45d51a738b91dea7d70207581063cd9bd8fafcf74/matplotlib-3.10.8-cp312-cp312-win_arm64.whl", hash = "sha256:3c624e43ed56313651bc18a47f838b60d7b8032ed348911c54906b130b20071b", size = 8012751, upload-time = "2025-12-10T22:55:42.684Z" },
- { url = "https://files.pythonhosted.org/packages/3d/b9/15fd5541ef4f5b9a17eefd379356cf12175fe577424e7b1d80676516031a/matplotlib-3.10.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3f2e409836d7f5ac2f1c013110a4d50b9f7edc26328c108915f9075d7d7a91b6", size = 8261076, upload-time = "2025-12-10T22:55:44.648Z" },
- { url = "https://files.pythonhosted.org/packages/8d/a0/2ba3473c1b66b9c74dc7107c67e9008cb1782edbe896d4c899d39ae9cf78/matplotlib-3.10.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:56271f3dac49a88d7fca5060f004d9d22b865f743a12a23b1e937a0be4818ee1", size = 8148794, upload-time = "2025-12-10T22:55:46.252Z" },
- { url = "https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a0a7f52498f72f13d4a25ea70f35f4cb60642b466cbb0a9be951b5bc3f45a486", size = 8718474, upload-time = "2025-12-10T22:55:47.864Z" },
- { url = "https://files.pythonhosted.org/packages/01/be/cd478f4b66f48256f42927d0acbcd63a26a893136456cd079c0cc24fbabf/matplotlib-3.10.8-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:646d95230efb9ca614a7a594d4fcacde0ac61d25e37dd51710b36477594963ce", size = 9549637, upload-time = "2025-12-10T22:55:50.048Z" },
- { url = "https://files.pythonhosted.org/packages/5d/7c/8dc289776eae5109e268c4fb92baf870678dc048a25d4ac903683b86d5bf/matplotlib-3.10.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f89c151aab2e2e23cb3fe0acad1e8b82841fd265379c4cecd0f3fcb34c15e0f6", size = 9613678, upload-time = "2025-12-10T22:55:52.21Z" },
- { url = "https://files.pythonhosted.org/packages/64/40/37612487cc8a437d4dd261b32ca21fe2d79510fe74af74e1f42becb1bdb8/matplotlib-3.10.8-cp313-cp313-win_amd64.whl", hash = "sha256:e8ea3e2d4066083e264e75c829078f9e149fa119d27e19acd503de65e0b13149", size = 8142686, upload-time = "2025-12-10T22:55:54.253Z" },
- { url = "https://files.pythonhosted.org/packages/66/52/8d8a8730e968185514680c2a6625943f70269509c3dcfc0dcf7d75928cb8/matplotlib-3.10.8-cp313-cp313-win_arm64.whl", hash = "sha256:c108a1d6fa78a50646029cb6d49808ff0fc1330fda87fa6f6250c6b5369b6645", size = 8012917, upload-time = "2025-12-10T22:55:56.268Z" },
- { url = "https://files.pythonhosted.org/packages/b5/27/51fe26e1062f298af5ef66343d8ef460e090a27fea73036c76c35821df04/matplotlib-3.10.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:ad3d9833a64cf48cc4300f2b406c3d0f4f4724a91c0bd5640678a6ba7c102077", size = 8305679, upload-time = "2025-12-10T22:55:57.856Z" },
- { url = "https://files.pythonhosted.org/packages/2c/1e/4de865bc591ac8e3062e835f42dd7fe7a93168d519557837f0e37513f629/matplotlib-3.10.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:eb3823f11823deade26ce3b9f40dcb4a213da7a670013929f31d5f5ed1055b22", size = 8198336, upload-time = "2025-12-10T22:55:59.371Z" },
- { url = "https://files.pythonhosted.org/packages/c6/cb/2f7b6e75fb4dce87ef91f60cac4f6e34f4c145ab036a22318ec837971300/matplotlib-3.10.8-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d9050fee89a89ed57b4fb2c1bfac9a3d0c57a0d55aed95949eedbc42070fea39", size = 8731653, upload-time = "2025-12-10T22:56:01.032Z" },
- { url = "https://files.pythonhosted.org/packages/46/b3/bd9c57d6ba670a37ab31fb87ec3e8691b947134b201f881665b28cc039ff/matplotlib-3.10.8-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b44d07310e404ba95f8c25aa5536f154c0a8ec473303535949e52eb71d0a1565", size = 9561356, upload-time = "2025-12-10T22:56:02.95Z" },
- { url = "https://files.pythonhosted.org/packages/c0/3d/8b94a481456dfc9dfe6e39e93b5ab376e50998cddfd23f4ae3b431708f16/matplotlib-3.10.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:0a33deb84c15ede243aead39f77e990469fff93ad1521163305095b77b72ce4a", size = 9614000, upload-time = "2025-12-10T22:56:05.411Z" },
- { url = "https://files.pythonhosted.org/packages/bd/cd/bc06149fe5585ba800b189a6a654a75f1f127e8aab02fd2be10df7fa500c/matplotlib-3.10.8-cp313-cp313t-win_amd64.whl", hash = "sha256:3a48a78d2786784cc2413e57397981fb45c79e968d99656706018d6e62e57958", size = 8220043, upload-time = "2025-12-10T22:56:07.551Z" },
- { url = "https://files.pythonhosted.org/packages/e3/de/b22cf255abec916562cc04eef457c13e58a1990048de0c0c3604d082355e/matplotlib-3.10.8-cp313-cp313t-win_arm64.whl", hash = "sha256:15d30132718972c2c074cd14638c7f4592bd98719e2308bccea40e0538bc0cb5", size = 8062075, upload-time = "2025-12-10T22:56:09.178Z" },
- { url = "https://files.pythonhosted.org/packages/3c/43/9c0ff7a2f11615e516c3b058e1e6e8f9614ddeca53faca06da267c48345d/matplotlib-3.10.8-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b53285e65d4fa4c86399979e956235deb900be5baa7fc1218ea67fbfaeaadd6f", size = 8262481, upload-time = "2025-12-10T22:56:10.885Z" },
- { url = "https://files.pythonhosted.org/packages/6f/ca/e8ae28649fcdf039fda5ef554b40a95f50592a3c47e6f7270c9561c12b07/matplotlib-3.10.8-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:32f8dce744be5569bebe789e46727946041199030db8aeb2954d26013a0eb26b", size = 8151473, upload-time = "2025-12-10T22:56:12.377Z" },
- { url = "https://files.pythonhosted.org/packages/f1/6f/009d129ae70b75e88cbe7e503a12a4c0670e08ed748a902c2568909e9eb5/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4cf267add95b1c88300d96ca837833d4112756045364f5c734a2276038dae27d", size = 9553896, upload-time = "2025-12-10T22:56:14.432Z" },
- { url = "https://files.pythonhosted.org/packages/f5/26/4221a741eb97967bc1fd5e4c52b9aa5a91b2f4ec05b59f6def4d820f9df9/matplotlib-3.10.8-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2cf5bd12cecf46908f286d7838b2abc6c91cda506c0445b8223a7c19a00df008", size = 9824193, upload-time = "2025-12-10T22:56:16.29Z" },
- { url = "https://files.pythonhosted.org/packages/1f/f3/3abf75f38605772cf48a9daf5821cd4f563472f38b4b828c6fba6fa6d06e/matplotlib-3.10.8-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:41703cc95688f2516b480f7f339d8851a6035f18e100ee6a32bc0b8536a12a9c", size = 9615444, upload-time = "2025-12-10T22:56:18.155Z" },
- { url = "https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl", hash = "sha256:83d282364ea9f3e52363da262ce32a09dfe241e4080dcedda3c0db059d3c1f11", size = 8272719, upload-time = "2025-12-10T22:56:20.366Z" },
- { url = "https://files.pythonhosted.org/packages/69/ce/b006495c19ccc0a137b48083168a37bd056392dee02f87dba0472f2797fe/matplotlib-3.10.8-cp314-cp314-win_arm64.whl", hash = "sha256:2c1998e92cd5999e295a731bcb2911c75f597d937341f3030cc24ef2733d78a8", size = 8144205, upload-time = "2025-12-10T22:56:22.239Z" },
- { url = "https://files.pythonhosted.org/packages/68/d9/b31116a3a855bd313c6fcdb7226926d59b041f26061c6c5b1be66a08c826/matplotlib-3.10.8-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:b5a2b97dbdc7d4f353ebf343744f1d1f1cca8aa8bfddb4262fcf4306c3761d50", size = 8305785, upload-time = "2025-12-10T22:56:24.218Z" },
- { url = "https://files.pythonhosted.org/packages/1e/90/6effe8103f0272685767ba5f094f453784057072f49b393e3ea178fe70a5/matplotlib-3.10.8-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:3f5c3e4da343bba819f0234186b9004faba952cc420fbc522dc4e103c1985908", size = 8198361, upload-time = "2025-12-10T22:56:26.787Z" },
- { url = "https://files.pythonhosted.org/packages/d7/65/a73188711bea603615fc0baecca1061429ac16940e2385433cc778a9d8e7/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f62550b9a30afde8c1c3ae450e5eb547d579dd69b25c2fc7a1c67f934c1717a", size = 9561357, upload-time = "2025-12-10T22:56:28.953Z" },
- { url = "https://files.pythonhosted.org/packages/f4/3d/b5c5d5d5be8ce63292567f0e2c43dde9953d3ed86ac2de0a72e93c8f07a1/matplotlib-3.10.8-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:495672de149445ec1b772ff2c9ede9b769e3cb4f0d0aa7fa730d7f59e2d4e1c1", size = 9823610, upload-time = "2025-12-10T22:56:31.455Z" },
- { url = "https://files.pythonhosted.org/packages/4d/4b/e7beb6bbd49f6bae727a12b270a2654d13c397576d25bd6786e47033300f/matplotlib-3.10.8-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:595ba4d8fe983b88f0eec8c26a241e16d6376fe1979086232f481f8f3f67494c", size = 9614011, upload-time = "2025-12-10T22:56:33.85Z" },
- { url = "https://files.pythonhosted.org/packages/7c/e6/76f2813d31f032e65f6f797e3f2f6e4aab95b65015924b1c51370395c28a/matplotlib-3.10.8-cp314-cp314t-win_amd64.whl", hash = "sha256:25d380fe8b1dc32cf8f0b1b448470a77afb195438bafdf1d858bfb876f3edf7b", size = 8362801, upload-time = "2025-12-10T22:56:36.107Z" },
- { url = "https://files.pythonhosted.org/packages/5d/49/d651878698a0b67f23aa28e17f45a6d6dd3d3f933fa29087fa4ce5947b5a/matplotlib-3.10.8-cp314-cp314t-win_arm64.whl", hash = "sha256:113bb52413ea508ce954a02c10ffd0d565f9c3bc7f2eddc27dfe1731e71c7b5f", size = 8192560, upload-time = "2025-12-10T22:56:38.008Z" },
+sdist = { url = "https://files.pythonhosted.org/packages/63/1b/4be5be87d43d327a0cf4de1a56e86f7f84c89312452406cf122efe2839e6/matplotlib-3.10.9.tar.gz", hash = "sha256:fd66508e8c6877d98e586654b608a0456db8d7e8a546eb1e2600efd957302358", size = 34811233, upload-time = "2026-04-24T00:14:13.539Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/35/c6/5581e26c72233ebb2a2a6fed2d24fb7c66b4700120b813f51b0555acf0b6/matplotlib-3.10.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f0c3c28d9fbcc1fe7a03be236d73430cf6409c41fb2383a7ac52fe932b072cb1", size = 8319908, upload-time = "2026-04-24T00:12:21.323Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/18/4880dd762e40cd360c1bf06e890c5a97b997e91cb324602b1a19950ad5ce/matplotlib-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41cb28c2bd769aa3e98322c6ab09854cbcc52ab69d2759d681bba3e327b2b320", size = 8216016, upload-time = "2026-04-24T00:12:23.4Z" },
+ { url = "https://files.pythonhosted.org/packages/32/91/d024616abdba99e83120e07a20658976f6a343646710760c4a51df126029/matplotlib-3.10.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae20801130378b82d647ff5047c07316295b68dc054ca6b3c13519d0ea624285", size = 8789336, upload-time = "2026-04-24T00:12:26.096Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/04/030a2f61ef2158f5e4c259487a92ac877732499fb33d871585d89e03c42d/matplotlib-3.10.9-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c63ebcd8b4b169eb2f5c200552ae6b8be8999a005b6b507ed76fb8d7d674fe2", size = 9604602, upload-time = "2026-04-24T00:12:29.052Z" },
+ { url = "https://files.pythonhosted.org/packages/fc/c2/541e4d09d87bb6b5830fc28b4c887a9a8cf4e1c6cee698a8c05552ae2003/matplotlib-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d75d11c949914165976c621b2324f9ef162af7ebf4b057ddf95dd1dba7e5edcf", size = 9670966, upload-time = "2026-04-24T00:12:32.131Z" },
+ { url = "https://files.pythonhosted.org/packages/04/a1/4571fc46e7702de8d0c2dc54ad1b2f8e29328dea3ee90831181f7353d93c/matplotlib-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:d091f9d758b34aaaaa6331d13574bf01891d903b3dec59bfff458ef7551de5d6", size = 8217462, upload-time = "2026-04-24T00:12:35.226Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/d0/2269edb12aa30c13c8bcc9382892e39943ce1d28aab4ec296e0381798e81/matplotlib-3.10.9-cp312-cp312-win_arm64.whl", hash = "sha256:10cc5ce06d10231c36f40e875f3c7e8050362a4ee8f0ee5d29a6b3277d57bb42", size = 8136688, upload-time = "2026-04-24T00:12:37.442Z" },
+ { url = "https://files.pythonhosted.org/packages/aa/d3/8d4f6afbecb49fc04e060a57c0fce39ea51cc163a6bd87303ccd698e4fa6/matplotlib-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b580440f1ff81a0e34122051a3dfabb7e4b7f9e380629929bde0eff9af72165f", size = 8320331, upload-time = "2026-04-24T00:12:39.688Z" },
+ { url = "https://files.pythonhosted.org/packages/63/d9/9e14bc7564bf92d5ffa801ae5fac819ce74b925dfb55e3ebde61a3bbad3e/matplotlib-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b1b745c489cd1a77a0dc1120a05dc87af9798faebc913601feb8c73d89bf2d1e", size = 8216461, upload-time = "2026-04-24T00:12:42.494Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/17/4402d0d14ccf1dfc70932600b68097fbbf9c898a4871d2cbbe79c7801a32/matplotlib-3.10.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8f3bcac1ca5ed000a6f4337d47ba67dfddf37ed6a46c15fd7f014997f7bf865f", size = 8790091, upload-time = "2026-04-24T00:12:44.789Z" },
+ { url = "https://files.pythonhosted.org/packages/3e/0b/322aeec06dd9b91411f92028b37d447342770a24392aa4813e317064dad5/matplotlib-3.10.9-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a8d66a55def891c33147ba3ba9bfcabf0b526a43764c818acbb4525e5ed0838", size = 9605027, upload-time = "2026-04-24T00:12:47.583Z" },
+ { url = "https://files.pythonhosted.org/packages/74/88/5f13482f55e7b00bcfc09838b093c2456e1379978d2a146844aae05350ad/matplotlib-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d843374407c4017a6403b59c6c81606773d136f3259d5b6da3131bc814542cc2", size = 9671269, upload-time = "2026-04-24T00:12:50.878Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/e0/0840fd2f93da988ec660b8ad1984abe9f25d2aed22a5e394ff1c68c88307/matplotlib-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:f4399f64b3e94cd500195490972ae1ee81170df1636fa15364d157d5bdd7b921", size = 8217588, upload-time = "2026-04-24T00:12:53.784Z" },
+ { url = "https://files.pythonhosted.org/packages/47/b9/d706d06dd605c49b9f83a2aed8c13e3e5db70697d7a80b7e3d7915de6b17/matplotlib-3.10.9-cp313-cp313-win_arm64.whl", hash = "sha256:ba7b3b8ef09eab7df0e86e9ae086faa433efbfbdb46afcb3aa16aabf779469a8", size = 8136913, upload-time = "2026-04-24T00:12:56.501Z" },
+ { url = "https://files.pythonhosted.org/packages/9b/45/6e32d96978264c8ca8c4b1010adb955a1a49cfaf314e212bbc8908f04a61/matplotlib-3.10.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:09218df8a93712bd6ea133e83a153c755448cf7868316c531cffcc43f69d1cc9", size = 8368019, upload-time = "2026-04-24T00:12:58.896Z" },
+ { url = "https://files.pythonhosted.org/packages/86/0a/c8e3d3bba245f0f7fc424937f8ff7ef77291a36af3edb97ccd78aa93d84f/matplotlib-3.10.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:82368699727bfb7b0182e1aa13082e3c08e092fa1a25d3e1fd92405bff96f6d4", size = 8264645, upload-time = "2026-04-24T00:13:01.406Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/aa/5bf5a14fe4fed73a4209a155606f8096ff797aad89c6c35179026571133e/matplotlib-3.10.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3225f4e1edcb8c86c884ddf79ebe20ecd0a67d30188f279897554ccd8fded4dc", size = 8802194, upload-time = "2026-04-24T00:13:03.702Z" },
+ { url = "https://files.pythonhosted.org/packages/dd/5e/b4be852d6bba6fd15893fadf91ff26ae49cb91aac789e95dde9d342e664f/matplotlib-3.10.9-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:de2445a0c6690d21b7eb6ce071cebad6d40a2e9bdf10d039074a96ba19797b99", size = 9622684, upload-time = "2026-04-24T00:13:06.647Z" },
+ { url = "https://files.pythonhosted.org/packages/4c/3d/ed428c971139112ef730f62770654d609467346d09d4b62617e1afd68a5a/matplotlib-3.10.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:b2b9516251cb89ff618d757daec0e2ed1bf21248013844a853d87ef85ab3081d", size = 9680790, upload-time = "2026-04-24T00:13:10.009Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/09/052e884aaf2b985c63cb79f715f1d5b6a3eaa7de78f6a52b9dbc077d5b53/matplotlib-3.10.9-cp313-cp313t-win_amd64.whl", hash = "sha256:e9fae004b941b23ff2edcf1567a857ed77bafc8086ffa258190462328434faf8", size = 8287571, upload-time = "2026-04-24T00:13:13.087Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/38/ae27288e788c35a4250491422f3db7750366fc8c97d6f36fbdecfc1f5518/matplotlib-3.10.9-cp313-cp313t-win_arm64.whl", hash = "sha256:6b63d9c7c769b88ab81e10dc86e4e0607cf56817b9f9e6cf24b2a5f1693b8e38", size = 8188292, upload-time = "2026-04-24T00:13:15.546Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/e6/3bd8afd04949f02eabc1c17115ea5255e19cacd4d06fc5abdde4eeb0052c/matplotlib-3.10.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:172db52c9e683f5d12eaf57f0f54834190e12581fe1cc2a19595a8f5acb4e77d", size = 8321276, upload-time = "2026-04-24T00:13:18.318Z" },
+ { url = "https://files.pythonhosted.org/packages/41/86/86231232fff41c9f8e4a1a7d7a597d349a02527109c3af7d618366122139/matplotlib-3.10.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:97e35e8d39ccc85859095e01a53847432ba9a53ddf7986f7a54a11b73d0e143f", size = 8218218, upload-time = "2026-04-24T00:13:20.974Z" },
+ { url = "https://files.pythonhosted.org/packages/85/8f/becc9722cafc64f5d2eb0b7c1bf5f585271c618a45dbd8fabeb021f898b6/matplotlib-3.10.9-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aba1615dabe83188e19d4f75a253c6a08423e04c1425e64039f800050a69de6b", size = 9608145, upload-time = "2026-04-24T00:13:23.228Z" },
+ { url = "https://files.pythonhosted.org/packages/32/5d/f7e914f7d9325abff4057cee62c0fa70263683189f774473cbfb534cd13b/matplotlib-3.10.9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34cf8167e023ad956c15f36302911d5406bd99a9862c1a8499ea6f7c0e015dc2", size = 9885085, upload-time = "2026-04-24T00:13:25.849Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/fd/fa69f2221534e80cc5772ac2b7d222011a2acafc2ec7216d5dd174c864ae/matplotlib-3.10.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:59476c6d29d612b8e9bb6ce8c5b631be6ba8f9e3a2421f22a02b192c7dd28716", size = 9672358, upload-time = "2026-04-24T00:13:28.906Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/1a/5a4f747a8b271cbb024946d2dd3c913ab5032ba430626f8c3528ada96b4b/matplotlib-3.10.9-cp314-cp314-win_amd64.whl", hash = "sha256:336b9acc64d309063126edcdaca00db9373af3c476bb94388fe9c5a53ad13e6f", size = 8349970, upload-time = "2026-04-24T00:13:31.904Z" },
+ { url = "https://files.pythonhosted.org/packages/64/dc/95d60ecaefe30680a154b52ea96ab4b0dab547f1fd6aa12f5fb655e89cae/matplotlib-3.10.9-cp314-cp314-win_arm64.whl", hash = "sha256:2dc9477819ffd78ad12a20df1d9d6a6bd4fec6aaa9072681465fddca052f1456", size = 8272785, upload-time = "2026-04-24T00:13:34.511Z" },
+ { url = "https://files.pythonhosted.org/packages/70/a0/005d68bc8b8418300ce6591f18586910a8526806e2ab663933d9f20a41e9/matplotlib-3.10.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:da4e09638420548f31c354032a6250e473c68e5a4e96899b4844cf39ddea23fe", size = 8367999, upload-time = "2026-04-24T00:13:36.962Z" },
+ { url = "https://files.pythonhosted.org/packages/22/05/1236cc9290be70b2498af20ca348add76e3fffe7f67b477db5133a84f3ea/matplotlib-3.10.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:345f6f68ecc8da0ca56fad2ea08fde1a115eda530079eca185d50a7bc3e146c6", size = 8264543, upload-time = "2026-04-24T00:13:39.851Z" },
+ { url = "https://files.pythonhosted.org/packages/cd/c2/071f5a5ff6c5bd63aaaf2f45c811d9bf2ced94bde188d9e1a519e21d0cba/matplotlib-3.10.9-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4edcfbd8565339aa62f1cd4012f7180926fdbe71850f7b0d3c379c175cd6b66c", size = 9622800, upload-time = "2026-04-24T00:13:42.296Z" },
+ { url = "https://files.pythonhosted.org/packages/95/57/da7d1f10a85624b9e7db68e069dd94e58dc41dbf9463c5921632ecbe3661/matplotlib-3.10.9-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6be157fe17fc37cb95ac1d7374cf717ce9259616edec911a78d9d26dae8522d4", size = 9888561, upload-time = "2026-04-24T00:13:45.026Z" },
+ { url = "https://files.pythonhosted.org/packages/67/b2/ef8d6bb59b0edb6c16c968b70f548aa13b54348972def5aa6ac85df67145/matplotlib-3.10.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4e42042d54db34fda4e95a7bd3e5789c2a995d2dad3eb8850232ee534092fbbf", size = 9680884, upload-time = "2026-04-24T00:13:48.066Z" },
+ { url = "https://files.pythonhosted.org/packages/61/1c/d21bfeb9931881ebe96bcfcff27c7ae4b160ae0ec291a714c42641a56d75/matplotlib-3.10.9-cp314-cp314t-win_amd64.whl", hash = "sha256:c27df8b3848f32a83d1767566595e43cfaa4460380974da06f4279a7ec143c39", size = 8432333, upload-time = "2026-04-24T00:13:51.008Z" },
+ { url = "https://files.pythonhosted.org/packages/78/23/92493c3e6e1b635ccfff146f7b99e674808787915420373ac399283764c2/matplotlib-3.10.9-cp314-cp314t-win_arm64.whl", hash = "sha256:a49f1eadc84ca85fd72fa4e89e70e61bf86452df6f971af04b12c60761a0772c", size = 8324785, upload-time = "2026-04-24T00:13:53.633Z" },
]
[[package]]
@@ -1476,11 +1477,11 @@ wheels = [
[[package]]
name = "packaging"
-version = "26.0"
+version = "26.2"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
+ { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" },
]
[[package]]
@@ -1555,11 +1556,11 @@ wheels = [
[[package]]
name = "pathspec"
-version = "1.0.4"
+version = "1.1.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" },
]
[[package]]
@@ -1977,15 +1978,15 @@ wheels = [
[[package]]
name = "rich"
-version = "14.3.3"
+version = "15.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "markdown-it-py" },
{ name = "pygments" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/b3/c6/f3b320c27991c46f43ee9d856302c70dc2d0fb2dba4842ff739d5f46b393/rich-14.3.3.tar.gz", hash = "sha256:b8daa0b9e4eef54dd8cf7c86c03713f53241884e814f4e2f5fb342fe520f639b", size = 230582, upload-time = "2026-02-19T17:23:12.474Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/14/25/b208c5683343959b670dc001595f2f3737e051da617f66c31f7c4fa93abc/rich-14.3.3-py3-none-any.whl", hash = "sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d", size = 310458, upload-time = "2026-02-19T17:23:13.732Z" },
+ { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" },
]
[[package]]
@@ -2234,11 +2235,11 @@ wheels = [
[[package]]
name = "trove-classifiers"
-version = "2026.1.14.14"
+version = "2026.4.28.13"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/d8/43/7935f8ea93fcb6680bc10a6fdbf534075c198eeead59150dd5ed68449642/trove_classifiers-2026.1.14.14.tar.gz", hash = "sha256:00492545a1402b09d4858605ba190ea33243d361e2b01c9c296ce06b5c3325f3", size = 16997, upload-time = "2026-01-14T14:54:50.526Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/04/af/88fdebf242bc7bc4957c96c5358a2b2b0f07e5001401906783a521ea9f54/trove_classifiers-2026.4.28.13.tar.gz", hash = "sha256:c85bb8a53c3de7330d1699b844ed9fb809a602a09ac15dc79ad6d1a509be0676", size = 17035, upload-time = "2026-04-28T13:45:41.495Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/bb/4a/2e5583e544bc437d5e8e54b47db87430df9031b29b48d17f26d129fa60c0/trove_classifiers-2026.1.14.14-py3-none-any.whl", hash = "sha256:1f9553927f18d0513d8e5ff80ab8980b8202ce37ecae0e3274ed2ef11880e74d", size = 14197, upload-time = "2026-01-14T14:54:49.067Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/bb/fbdc4e57731efb86b4209ffdd2519520782bf27b3c961beac3e5c20d2b87/trove_classifiers-2026.4.28.13-py3-none-any.whl", hash = "sha256:8f4b1eb4e16296b57d612965444f87a83861cc989a0451ac97fe4265ddef03b8", size = 14216, upload-time = "2026-04-28T13:45:39.943Z" },
]
[[package]]
@@ -2252,11 +2253,11 @@ wheels = [
[[package]]
name = "tzdata"
-version = "2026.1"
+version = "2026.2"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/19/f5/cd531b2d15a671a40c0f66cf06bc3570a12cd56eef98960068ebbad1bf5a/tzdata-2026.1.tar.gz", hash = "sha256:67658a1903c75917309e753fdc349ac0efd8c27db7a0cb406a25be4840f87f98", size = 197639, upload-time = "2026-04-03T11:25:22.002Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 198254, upload-time = "2026-04-24T15:22:08.651Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b0/70/d460bd685a170790ec89317e9bd33047988e4bce507b831f5db771e142de/tzdata-2026.1-py2.py3-none-any.whl", hash = "sha256:4b1d2be7ac37ceafd7327b961aa3a54e467efbdb563a23655fbfe0d39cfc42a9", size = 348952, upload-time = "2026-04-03T11:25:20.313Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" },
]
[[package]]