build(deps): bump packaging from 26.0 to 26.2#20853
Conversation
🤖 Cursor Dependency AnalysisSupply-Chain Malware ReviewVerdict: benign Why (aligned with your checklist and the scanner report)
Actionable check before merge: Confirm the PR diff is only dependency manifests/lockfile (and maybe Compatibility AnalysisSearching the codebase for 1) Where
|
| Location | Use |
|---|---|
chia/util/chia_version.py |
Version, InvalidVersion — parse/format display versions (.major/.minor/.micro, .pre) |
installhelper.py |
Version — semver helper for GUI (release, pre, dev, local) |
chia/server/ws_connection.py |
Version — protocol version parsing/comparison |
chia/full_node/full_node.py |
Version — peer/software version checks |
chia/farmer/farmer_api.py |
Version — protocol version gates |
chia/wallet/wallet_node.py |
Version — protocol version check |
chia/cmds/dev/installers.py |
packaging.version.Version — installer/version assertions |
chia/_tests/util/test_chia_version.py, chia/_tests/core/server/test_server.py, chia/_tests/core/full_node/test_full_node.py |
tests mirroring above |
Declared in pyproject.toml as packaging = ">=26.2" with poetry.lock pinning 26.2 (typical Dependabot outcome).
.upstream-dependency/ is upstream packaging source/tests only, not Chia runtime code.
2) Overlap with 26.1 / 26.2 changes
- 26.2 (pickle compatibility,
ExceptionGroupre-export, pyemscripten sysconfig): no overlap — Chia does not pickleVersion/ other packaging types (no matches for that pattern). - 26.1 (specifiers, markers, wheel tags,
SpecifierSet.is_unsatisfiable,Marker&/|, prerelease/post-release specifier tweaks, local-version ASCII rule, etc.): no overlap — Chia does not importSpecifier,SpecifierSet,Requirement,Marker, or wheel/metadata helpers frompackaging.
Usage stays on Version(...) plus comparisons (<, <=, >) and simple attributes — stable, documented surface.
3) Risks / unknowns
- Low: Dependency is a declared runtime dependency; transitive pins elsewhere are Poetry’s concern and already resolved in lockfile for this bump.
- Theoretical: Stricter local-version handling (26.1) could affect parsing only if real Chia version strings carried unusual/non-ASCII locals — unlikely for normal releases.
- Not a concern here: Pickle migrations, specifier semantics, Emscripten wheel tags.
4) Recommendation
Merge. Narrow API usage (Version / InvalidVersion) does not intersect the substantive behavioral/API churn called out for 26.1–26.2; 26.2 is largely corrective. Rely on CI as usual after lockfile/update lands.
Malware Scan Summary
- Status: warn
- Warn only mode:
true - Changed upstream files scanned:
87 - Resolution strategy:
tag_range - Changed node/vendor paths:
0 - Changed lockfiles:
0 - Resolved upstream range:
3b77a26f5a27473ad3b08194d773f325d018a2d0..84a87ee42483d7352f9502d78a9553da8859aa7a - Resolved refs: from=
3b77a26f5a27473ad3b08194d773f325d018a2d0to=84a87ee42483d7352f9502d78a9553da8859aa7a - Unicode findings (post-allowlist):
2 - Confusable findings (post-allowlist):
0 - IOC findings (post-allowlist):
0 - Heuristic findings (post-allowlist):
26
Top findings
tests/test_metadata.py:1083unicode ::("Foo", "🕵️"),tests/test_metadata.py:1085unicode ::"Foo: 🕵️\n",tests/test_tags.py:8shell_process_spawn ::import subprocesstests/test_tags.py:351shell_process_spawn ::subprocess,tests/test_tags.py:353shell_process_spawn ::lambda *args, **kwargs: subprocess.CompletedProcess(tasks/check_frozen_revs.py:49shell_process_spawn ::stdout=asyncio.subprocess.PIPE,tasks/check_frozen_revs.py:50shell_process_spawn ::stderr=asyncio.subprocess.DEVNULL,tests/test_musllinux.py:4shell_process_spawn ::import subprocesstests/test_musllinux.py:82shell_process_spawn ::monkeypatch.setattr(_musllinux.subprocess, "run", run_recorder) # type: ignore[attr-defined]tests/test_musllinux.py:91shell_process_spawn ::stderr=subprocess.PIPE,src/packaging/tags.py:12shell_process_spawn ::import subprocesssrc/packaging/tags.py:605shell_process_spawn ::version_str = subprocess.run(src/packaging/tags.py:614shell_process_spawn ::stdout=subprocess.PIPE,noxfile.py:15shell_process_spawn ::import subprocessnoxfile.py:310shell_process_spawn ::result = subprocess.run(noxfile.py:461shell_process_spawn ::result = subprocess.run(noxfile.py:470shell_process_spawn ::result = subprocess.run(noxfile.py:480shell_process_spawn ::result = subprocess.run(noxfile.py:491shell_process_spawn ::result = subprocess.run(noxfile.py:514shell_process_spawn ::subprocess.run(["git", "add", str(file)], check=False)
7460c92 to
0bdeaf5
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 0bdeaf5a8365f782f7c1b5465fe69ad4dbbfe812. Configure here.
Coverage Report for CI Build 26295026561Warning Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes. Coverage decreased (-0.004%) to 91.497%Details
Uncovered ChangesNo uncovered changes found. Coverage Regressions24 previously-covered lines in 7 files lost coverage.
Coverage Stats💛 - Coveralls |
0bdeaf5 to
6f2dede
Compare
🤖 Cursor Dependency AnalysisSupply-Chain Malware ReviewI'll review how Summary: This is a routine Dependabot bump of the official PyPA Checklist review
Scanner interpretation (warn → benign): The
Chia usage note (non-security): The repo imports Action: Safe to merge from a supply-chain/malware perspective, assuming CI passes. No extra malware-specific follow-up required. Compatibility AnalysisAnalyzing how Compatibility analysis:
|
| Area | Files | Usage |
|---|---|---|
| Runtime (protocol gating) | chia/server/ws_connection.py, chia/full_node/full_node.py, chia/farmer/farmer_api.py, chia/wallet/wallet_node.py |
Parse/compare peer protocol_version (<, <=, >, ==) |
| Version formatting | chia/util/chia_version.py |
Version, InvalidVersion; reads .major/.minor/.micro/.pre |
| GUI/install tooling | installhelper.py, chia/cmds/dev/installers.py |
Parse Chia/plotter versions; semver conversion via .release/.pre/.dev/.local |
| Tests | chia/_tests/util/test_chia_version.py, test_server.py, test_full_node.py |
Version parsing/comparison coverage |
No direct use of specifiers, markers, requirements, tags, metadata, dependency_groups, _structures, or pickling Version objects in application code.
Transitive use via pip, setuptools, pytest, build, pyinstaller (all declare packaging>=20–24); Chia does not call those APIs directly.
2) Intersection with upstream changes
| Changed area (26.0→26.2) | Chia overlap |
|---|---|
Version internals, pickle support, _structures shim |
Low — uses public Version/InvalidVersion API only; no pickling |
Specifier behavior fixes (<V.postN, >V) |
None — no Specifier/SpecifierSet usage |
New modules (dependency_groups, direct_url, errors, etc.) |
None |
| Wheel/tag/Emscripten changes | None — not a wheel consumer at runtime |
| Local version ASCII restriction (26.1) | None — Chia versions are ASCII (e.g. 1.8.2+og-1.4.0) |
ExceptionGroup re-export |
None |
Chia’s usage sits on the stable, unchanged surface: construct Version(str), compare, read standard attributes. Existing tests in test_chia_version.py cover the non-trivial version strings Chia actually parses.
3) Risks / unknowns
- 26.1 skipped in practice: This bump spans 26.1 as well (large internal
Versionrefactor). Risk is mitigated by Chia’s narrow API usage and existing version tests, but protocol-version gate behavior is the one place worth CI confirmation. - Transitive resolver behavior: Pip/setuptools may see stricter specifier semantics in 26.1+; unlikely to affect Chia’s direct pin, but could subtly change optional-extra resolution — monitor CI lock/install step only.
- Malware scan:
warnfrom benign upstream patterns (test unicode,subprocessintags.pyfor platform detection). Not a supply-chain blocker.
4) Recommendation: merge
Low-risk dependency bump. Chia uses only packaging.version for PEP 440 parsing and comparison; upstream changes are mostly fixes, additive APIs, and internals Chia does not touch. test_chia_version.py plus protocol/server tests are sufficient validation; no code changes required.
Malware Scan Summary
- Status: warn
- Warn only mode:
true - Changed upstream files scanned:
87 - Resolution strategy:
tag_range - Changed node/vendor paths:
0 - Changed lockfiles:
0 - Resolved upstream range:
3b77a26f5a27473ad3b08194d773f325d018a2d0..84a87ee42483d7352f9502d78a9553da8859aa7a - Resolved refs: from=
3b77a26f5a27473ad3b08194d773f325d018a2d0to=84a87ee42483d7352f9502d78a9553da8859aa7a - Unicode findings (post-allowlist):
2 - Confusable findings (post-allowlist):
0 - IOC findings (post-allowlist):
0 - Heuristic findings (post-allowlist):
26
Top findings
tests/test_metadata.py:1083unicode ::("Foo", "🕵️"),tests/test_metadata.py:1085unicode ::"Foo: 🕵️\n",tests/test_tags.py:8shell_process_spawn ::import subprocesstests/test_tags.py:351shell_process_spawn ::subprocess,tests/test_tags.py:353shell_process_spawn ::lambda *args, **kwargs: subprocess.CompletedProcess(tasks/check_frozen_revs.py:49shell_process_spawn ::stdout=asyncio.subprocess.PIPE,tasks/check_frozen_revs.py:50shell_process_spawn ::stderr=asyncio.subprocess.DEVNULL,tests/test_musllinux.py:4shell_process_spawn ::import subprocesstests/test_musllinux.py:82shell_process_spawn ::monkeypatch.setattr(_musllinux.subprocess, "run", run_recorder) # type: ignore[attr-defined]tests/test_musllinux.py:91shell_process_spawn ::stderr=subprocess.PIPE,src/packaging/tags.py:12shell_process_spawn ::import subprocesssrc/packaging/tags.py:605shell_process_spawn ::version_str = subprocess.run(src/packaging/tags.py:614shell_process_spawn ::stdout=subprocess.PIPE,noxfile.py:15shell_process_spawn ::import subprocessnoxfile.py:311shell_process_spawn ::result = subprocess.run(noxfile.py:462shell_process_spawn ::result = subprocess.run(noxfile.py:471shell_process_spawn ::result = subprocess.run(noxfile.py:481shell_process_spawn ::result = subprocess.run(noxfile.py:492shell_process_spawn ::result = subprocess.run(noxfile.py:515shell_process_spawn ::subprocess.run(["git", "add", str(file)], check=False)
6f2dede to
77aef30
Compare
77aef30 to
c44abfb
Compare
c44abfb to
580efaa
Compare
580efaa to
719ea34
Compare
719ea34 to
de372fe
Compare
de372fe to
28af32b
Compare
28af32b to
7cfba4d
Compare
7cfba4d to
8899eee
Compare
Bumps [packaging](https://github.com/pypa/packaging) from 26.0 to 26.2. - [Release notes](https://github.com/pypa/packaging/releases) - [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst) - [Commits](pypa/packaging@26.0...26.2) --- updated-dependencies: - dependency-name: packaging dependency-version: '26.2' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
8899eee to
23814e7
Compare

Bumps packaging from 26.0 to 26.2.
Release notes
Sourced from packaging's releases.
... (truncated)
Changelog
Sourced from packaging's changelog.
... (truncated)
Commits
84a87eeBump for release4a616b6docs: a few more updates to prepare for 26.2 (#1176)9de6f44ci: use native uv integration in rtd (#1175)bc76e14chore: update changelog for 26.2 (#1161)3f00091tests: add a pickle check (#1174)48a8a06fix: make Requirements/Markers pickle-safe (#1171)823b44efix: make Tags pickle-safe (#1170)4bed32dfix: make Specifier / SpecifierSet pickle-safe (#1168)963118efix: re-export ExceptionGroup for now (#1164)66e34a8docs(specifiers): add is_unsatisfiable() usage example (#1166)Note
Low Risk
Low risk dependency bump limited to Python packaging metadata; main risk is subtle behavior changes in version/specifier parsing impacting dependency resolution at runtime/build time.
Overview
Updates the
packagingdependency requirement to>=26.2and refreshespoetry.lockto lockpackagingat26.2(with updated artifact hashes and lockcontent-hash).Reviewed by Cursor Bugbot for commit 23814e7. Bugbot is set up for automated code reviews on this repo. Configure here.