Repository navigation
DLPX-99537 dependency-bump: batch update 6 dependencies (consolidates 10 PRs) - #721
Conversation
d4309e2 to
29ac4b4
Compare
|
@/tmp/new_status_comment.md |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The lockfile includes an unassessed major pymdown-extensions upgrade that contradicts the stated dependency count and risk analysis.
Review effort: Balanced
Findings: None
What changed in this PR
Updates Python development, linting, and documentation dependencies across the SDK.
Changes:
- Updates
pyparsingacross all five Python modules. - Updates Flake8, Pyflakes, Pycodestyle, and coverage tooling.
- Refreshes documentation dependencies, including
urllib3security fixes.
| File | Description |
|---|---|
common/pyproject.toml |
Updates pyparsing. |
libs/pyproject.toml |
Updates pyparsing. |
platform/pyproject.toml |
Updates pyparsing. |
tools/pyproject.toml |
Updates linting, coverage, and parsing dependencies. |
dvp/pyproject.toml |
Updates pyparsing. |
docs/Pipfile.lock |
Refreshes documentation dependencies and hashes. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Addressing feedback from @copilot-pull-request-reviewer[bot]: you're right that Updated the PR description with a dedicated |
|
Addressing feedback from @copilot-pull-request-reviewer[bot]:
No code or manifest change results from this comment — it's a status clarification, not a requested edit. |
6a0415f to
2323d30
Compare
There was a problem hiding this comment.
🔵 Needs a closer look
The Pyflakes and Pymdown Extensions major upgrades require human validation, and the triggered blackbox results are not reported.
0 open findings
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
TL;DR
Consolidates 10 open Dependabot PRs into one batch covering 6 distinct dependencies (policy:
latest-stable). Build passed clean on the first attempt (no fix-and-retry needed) across all 5 Python modules plus the docsmkdocs --strictbuild. Batch risk is HIGH because two dependencies crossed a major version underlatest-stable:pyflakes(3→4), one of the 6 named dependencies, andpymdown-extensions(11→12.1), a transitive package swept intodocs/Pipfile.lockby theurllib3lock refresh with no source PR of its own — see its dedicated entry below. No exploitable CVEs were found in production code anywhere in the batch.Edit 2026-10-07 (reconcile pass): added the
pymdown-extensionsentry below in response to automated review feedback flagging that this major-version crossing wasn't originally assessed — see PR discussion.Edit 2026-10-07 (reconcile pass):
pyflakesre-resolved from4.0.2to4.0.3— a newerlatest-stablerelease was published on PyPI after this batch was first opened. Still within the same major version (4.x), so this does not change the batch's risk tier or the reason it's HIGH.Batch risk tier: HIGH
⚠ Manual review required — see the per-dependency breakdown below for which entries are not LOW risk. Two independent major-version crossings drive this tier:
pyflakes(3→4) andpymdown-extensions(11→12).Dependencies in this batch (6)
pyparsing3.3.2→3.3.3pyflakes3.4.0→4.0.3pycodestyle2.14.0→2.15.0flake87.3.0→7.4.1coverage7.16.0→7.16.2urllib32.7.0→2.8.0pyparsing:3.3.2→3.3.3— risk: LOWManifests affected:
common/pyproject.tomllibs/pyproject.tomlplatform/pyproject.tomltools/pyproject.tomldvp/pyproject.tomlCVE findings (0 in this version range): No CVE-tagged commits between
3.3.2and3.3.3.Commit breakdown (3 commits): 0 security, 0 bug fixes, 0 features, 0 breaking, 3 refactor/test/build (internal recursion rework, CI test additions, packaging metadata).
Transitive dev dependency (pulled in by
packaging/pytest tooling) — not imported directly anywhere in this repo.pyflakes:3.4.0→4.0.3— risk: HIGHManifests affected:
tools/pyproject.tomlCVE findings (0 in this version range): No CVE-tagged commits between
3.4.0and4.0.3.Commit breakdown (46 commits): 0 security, ~6 bug fixes, ~8 features (new lazy-import error classes, typing specializations), 1 breaking (dropped Python <3.9 fallback — not applicable, this repo targets 3.11 only), ~31 refactor/test/docs/release commits.
Your usage: not imported directly — invoked only as a
flake8plugin (seeflake8entry below, which this batch bumps in lockstep and whose upstream history shows explicit pyflakes-4.x compatibility fixes). ✅ NOT CALLED directly.Version note: source PR (#712) proposed
pyflakes 4.0.1. dependency-bump originally resolved to4.0.2(policy:latest-stable), then re-resolved to4.0.3on a reconcile pass once that newer release appeared on PyPI — bringing the repo to current rather than partially upgraded.Why HIGH: this resolution crosses a major version (3→4), which forces HIGH under this repo's
latest-stablepolicy regardless of the (clean) build and CVE results — flagged for human review of the major-version jump itself, not because of any known exploit.pycodestyle:2.14.0→2.15.0— risk: LOWManifests affected:
tools/pyproject.tomlCVE findings: unknown — this dependency's PyPI metadata has no
project_urls/home_pageGitHub link, so upstream commit history and CVE lookup could not be attempted. No CVE was found via the version-range check regardless.Your usage: not imported directly — invoked only as a
flake8plugin. ✅ NOT CALLED directly.flake8:7.3.0→7.4.1— risk: LOWNote: this dependency has two affected lines in the same manifest — an exact dev-extra pin (
== 7.3.0→== 7.4.1) and a main-dependencies range ceiling (>= 7.3, < 7.4→>= 7.3, < 7.5, matching the source PR's own proposed range, which already admits the resolved7.4.1).Manifests affected:
tools/pyproject.tomlCVE findings (0 in this version range): No CVE-tagged commits between
7.3.0and7.4.1.Commit breakdown (49 commits): 0 security, ~3 bug fixes (including explicit "fix pyflakes 4.x --builtins integration" and "update to latest pyflakes" — upstream's own adaptation to the pyflakes major bump in this same batch), ~2 features (py3.10+ support, F842 docs), 0 breaking, ~44 refactor/CI/pre-commit-bot maintenance commits.
Your usage: 🔴 CALLED —
tools/src/main/python/dlpx/virtualization/_internal/plugin_validator.py:13importsflake8.api.legacyand callsget_style_guide(select=["F821"]). This is the one dependency in the batch with a real call site; the post-change build'stoolstest suite (test_plugin_validator.py) exercises this exact code path and passed cleanly, which is empirical evidence this transition — including the coupled pyflakes major bump — doesn't break it.coverage:7.16.0→7.16.2— risk: LOWManifests affected:
tools/pyproject.tomlCVE findings (0 in this version range): No CVE-tagged commits between
7.16.0and7.16.2.Commit breakdown (31 commits): 0 security, ~7 bug fixes, ~1 feature, 0 breaking, ~23 refactor/test/docs/release commits.
Your usage: not imported directly — invoked only via
coverage runin the build pipeline. ✅ NOT CALLED directly.urllib3:2.7.0→2.8.0— risk: LOWNote: transitive-only dependency — no direct line in
docs/Pipfile, pinned only indocs/Pipfile.lock. No manifest text edit was made;docs/Pipfile.lockwas refreshed viapipenv lockper this repo's## Lock filesconfig, which also moved several other transitive doc-tooling packages as an expected side effect of the re-resolve (see the freeze/lock diff).Manifests affected:
docs/Pipfile.lockCVE findings (3 in this version range):
2.8.0. Your usage: ✅ NOT CALLED in this repo.HTTPResponse.stream()/read_chunked()buffers an unbounded chunk-size line into memory. Fixed in2.8.0. Your usage: ✅ NOT CALLED in this repo.2.8.0. Your usage: ✅ NOT CALLED in this repo.rgfound zeroimport urllib3/urllib3.references anywhere undercommon/,libs/,platform/,tools/,dvp/. It's pulled in transitively by the docs-onlymkdocs/pipenv toolchain — not reachable from any plugin-facing or CLI code path.Commit breakdown (69 commits): 0 security commits isolated by name, but 3 CVE fixes landed in this version range per GHSA (see above); remainder: ~15 bug fixes, ~10 features, 0 breaking, ~41 refactor/CI/docs commits.
pymdown-extensions(swept transitive, no source PR):11.0.2→12.1— risk: HIGHManifests affected:
docs/Pipfile.lockNote: like
urllib3above, no direct line indocs/Pipfile—mkdocs-material's own (unchanged) pin allows this version, andpipenv lock's re-resolve picked up the current resolver output when the lock was refreshed forurllib3. Unlikeurllib3, this one crosses a major version (11→12), which was not called out in the original version of this PR body — added here in response to review feedback.CVE findings (0 in this version range): 5 historical GHSA advisories exist for this package (ReDoS in caret/tilde/betterem/magiclink, path traversal in
b64andsnippets), but all are fixed in versions<= 11.0.1— before this batch's starting version (11.0.2). 0 new CVEs apply to the11.0.2→12.1range.Commit breakdown (60 commits): notable changes include a rewrite of the
betterem/tilde/caret/markinline processors and a newbracketspanextension. This repo'sdocs/mkdocs.ymlonly enablespymdownx.highlight,pymdownx.inlinehilite,pymdownx.snippets,pymdownx.superfences,pymdownx.details, andpymdownx.tabbed— none of which are among the rewritten/new extensions above.Your usage: ✅ configured extensions unaffected by the rewritten code paths per the commit scan above; empirically confirmed by both the baseline and post-change
mkdocs build --clean --strictpassing clean (same build evidence already reported for the batch as a whole in "Build verification" below).Why HIGH: same rule as
pyflakes— an unreviewed major-version crossing is HIGH under this repo'slatest-stablepolicy regardless of a clean build/CVE result, whether or not a source PR proposed it. This doesn't change the batch's already-HIGH tier, but corrects the original TL;DR, which citedpyflakesas the sole reason.Source PRs consolidated (10)
dependency-bump does not close these. Once this PR merges and dep versions match the manifests, the bot that opened each one is responsible for auto-closing it on its own next scan.
Build verification
mkdocs build --clean --strictcleanmkdocs build --clean --strictcleanpyflakesre-resolved to4.0.3)tools(768 total across modules, 0 failed); flake8 clean; docsmkdocs build --clean --strictcleanCommands run (per
.claude/dependency-bump.md), against all manifests touched by this batch (all 5 modules affected, so pass 2 is unscoped):sh bin/build_project.sh -bsh bin/build_project.sh -ctfcd docs && pipenv sync && pipenv run mkdocs build --clean --strictAdditional automations
Re-run on the reconcile pass that bumped
pyflakesto4.0.3, against the current HEAD.sh bin/build_project.sh -f— PASSED, clean across all 5 modulesdvp init --root-dir . && dvp build --dev(end-to-end plugin build smoke check, run from an isolated temp dir) — PASSED,artifact.jsonproduced (1 MB, well-formedPluginartifact)trigger_blackbox.sh ... virtualization_sdk APPDATA_SDK_UBUNTU20_STAGED_CENTOS73— triggered (not factored into risk tier)→ Tracking URL: https://selfservice-jenkins.eng-tools-prd.aws.delphixcloud.com/job/blackbox-self-service/233476/
trigger_blackbox.sh ... appdata_basic APPDATA_PYTHON_STAGED_RHEL93— triggered (not factored into risk tier)→ Tracking URL: https://selfservice-jenkins.eng-tools-prd.aws.delphixcloud.com/job/blackbox-self-service/233477/
Installed package changes (
pip freezediff)The diff below shows the full effect of this batch's pip-managed modules (common/libs/platform/tools/dvp venv) — no unexpected transitive drift, exactly the 5 explicit bumps pulled in via pip:
5 explicit + 0 unexpected transitive package version changes in the shared pip venv.
urllib3's transition (2.7.0 → 2.8.0) is tracked separately via thedocs/Pipfile.lockdiff above, since it's pipenv-managed rather than part of the pip venv's own dependency graph; a handful of other docs-only transitive packages (charset-normalizer, idna, markdown, markupsafe, platformdirs, babel, ghp-import, jinja2, mergedeep, etc.) also moved as an expected side effect of thepipenv lockre-resolve. Of those, onlypymdown-extensions(11.0.2 → 12.1) crossed a major version — see its dedicated entry above; the rest are patch/minor bumps.Generated by dependency-bump · policy:
latest-stable