Skip to content

build(deps): bump packaging from 26.0 to 26.1#20838

Open
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/pip/packaging-26.1
Open

build(deps): bump packaging from 26.0 to 26.1#20838
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/pip/packaging-26.1

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Apr 28, 2026

Bumps packaging from 26.0 to 26.1.

Release notes

Sourced from packaging's releases.

26.1

Features:

Behavior adaptations:

Pylock (PEP 751) updates:

Fixes:

Performance:

... (truncated)

Changelog

Sourced from packaging's changelog.

26.1 - 2026-04-14


Features:
  • PEP 783: add handling for Emscripten wheel tags in (:pull:804) (old name used in implementation, fixed in next release)
  • PEP 803: add handling for the abi3.abi3t free-threading tag in (:pull:1099)
  • PEP 723: add packaging.dependency_groups module, based on the dependency-groups package in (:pull:1065)
  • Add the packaging.direct_url module in (:pull:944)
  • Add the packaging.errors module in (:pull:1071)
  • Add SpecifierSet.is_unsatisfiable using ranges (new internals that will be expanded in future versions) in (:pull:1119)
  • Add create_compatible_tags_selector to select compatible tags in (:pull:1110)
  • Add a key argument to SpecifierSet.filter() in (:pull:1068)
  • Support & and | for Marker's in (:pull:1146)
  • Normalize Version.__replace__ and add Version.from_parts in (:pull:1078)
  • Add an option to validate compressed tag set sort order in parse_wheel_filename in (:pull:1150)

Behavior adaptations:

  • Narrow exclusion of pre-releases for <V.postN to match spec in (:pull:1140)
  • Narrow exclusion of post-releases for >V to match spec in (:pull:1141)
  • Rename format_full_version to _format_full_version to make it visibly private in (:pull:1125)
  • Restrict local version to ASCII in (:pull:1102)

Pylock (PEP 751) updates:

  • Add pylock select function in (:pull:1092)
  • Document pylock select() method and PylockSelectError in (:pull:1153)
  • Add filename property to PackageSdist and PackageWheel, more validation in (:pull:1095)
  • Give preference to path over url in (:pull:1128)
  • Validate name/version consistency in file names in (:pull:1114)

Fixes:

  • Fix > comparison for versions with dev+local segments in (:pull:1097)
  • Fix incorrect self-comparison for InfinityType and NegativeInfinityType in (:pull:1093)
  • Canonicalize when deduplicating specifiers in SpecifierSet in (:pull:1109)
  • Fix charset error message formatting in (:pull:1121)
  • Handle the key parameter in SpecifierSet.filter when specifiers are empty and prerelease is False in (:pull:1096)
  • Standardize inner components of repr output in (:pull:1090)
  • Specifier's === uses original string, not normalized, when available in (:pull:1124)
  • Propagate int-max-str-digits ValueError in (:pull:1155)

Performance:

  • Add fast path for parsing simple versions (digits and dots only) in (:pull:1082)
  • Add fast path for Version to Version comparison by skipping _key property in (:pull:1083)
  • Cache Version hash value in dedicated slot in (:pull:1118)
  • Overhaul _cmpkey to remove use of custom objects in (:pull:1116)
  • Skip __replace__ in Specifier comparison if not needed in (:pull:1081)
    </tr></table>

... (truncated)

Commits
  • c1a88a3 Bump for release
  • 702c25e docs: update changelog for 26.1 (#1156)
  • 3f4f5d4 Implement is_unsatisfiable on SpecifierSet using ranges (#1119)
  • 06c6555 Propagate int-max-str-digits ValueError (#1155)
  • 905c90c feat: option to validate compressed tag set sort order in `parse_wheel_filena...
  • af0026c docs(pylock): document select() method and PylockSelectError (#1153)
  • 668da86 Rename format_full_version to _format_full_version to make it visibly private...
  • f294d52 tests: do not reload the tags module (#1152)
  • 2c6c7df feat: add handling for Emscripten wheels tags per PEP 783 (#804)
  • 6762eea docs(markers): document & and | operators for combining Marker objects (#1151)
  • Additional commits viewable in compare view

Dependabot compatibility score

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 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 <dependency name> 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)

Note

Low Risk
Low risk dependency bump limited to Python packaging utilities; main risk is subtle behavior changes in version/specifier/tag parsing affecting build or dependency resolution.

Overview
Updates the packaging dependency from 26.0 to 26.1 by raising the constraint in pyproject.toml and refreshing poetry.lock with the new wheel/sdist hashes and lock content-hash.

Reviewed by Cursor Bugbot for commit 9c59e4c. Bugbot is set up for automated code reviews on this repo. Configure here.

Bumps [packaging](https://github.com/pypa/packaging) from 26.0 to 26.1.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](pypa/packaging@26.0...26.1)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '26.1'
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added Changed Required label for PR that categorizes merge commit message as "Changed" for changelog dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Apr 28, 2026
@dependabot dependabot Bot requested a review from a team as a code owner April 28, 2026 20:25
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update Python code Changed Required label for PR that categorizes merge commit message as "Changed" for changelog labels Apr 28, 2026
@socket-security
Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedpypi/​packaging@​26.0 ⏵ 26.199 +1100100100100

View full report

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9c59e4c. Configure here.

Comment thread pyproject.toml
filelock = ">=3.16.1" # For reading and writing config multiprocess and multithread safely (non-reentrant locks)
keyring = ">=25.5.0" # Store keys in MacOS Keychain, Windows Credential Locker
packaging = ">=24.0"
packaging = ">=26.1"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Minimum version constraint unnecessarily tightened from 24.0 to 26.1

Medium Severity

The packaging minimum version in pyproject.toml was raised from >=24.0 to >=26.1, but the codebase only uses packaging.version.Version — a feature available since much older versions. This Dependabot PR is meant to bump the lock file only, not tighten the minimum constraint. Raising it unnecessarily restricts compatibility for downstream consumers and environments that may not yet have packaging 26.1 available.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9c59e4c. Configure here.

@github-actions
Copy link
Copy Markdown
Contributor

🤖 Cursor Dependency Analysis

Supply-Chain Malware Review

Verdict: benign

Why this looks safe

  • Provenance: The bump is to pypa/packaging 26.1, a normal PyPA release with public tag, changelog, and compare range 26.0...26.1 — not a typosquat or mystery version.
  • Classic obfuscation / exfiltration: Nothing in your materials points to encoded payloads, odd hosts, persistence, or credential theft; the release notes match ordinary library work (PEPs, specifiers, markers, pylock, etc.).
  • Scanner vs. PR scope: The report’s 81 files, .github/workflows/ touches, noxfile.py, docs/, etc. reflect a scan of the upstream git range for packaging, not proof that the Chia Dependabot PR rewrites your CI. For this repo, expect pyproject.toml / poetry.lock (and hashes there should match PyPI — verify in the real PR diff).
  • Heuristic “subprocess” / exec: Matches are expected upstream: tests use subprocess; noxfile/tasks use it; packaging.tags has historically used subprocess for platform/toolchain probes. That is not supply-chain smoke by itself.
  • Unicode findings: Emoji in tests/test_metadata.py is consistent with encoding/metadata tests, not invisible-Unicode Trojan Source in production code.

Residual risk (not malware)

  • Compatibility: 26.1 tightens some version/specifier behavior (e.g. local segment ASCII, prerelease/postrelease edge cases). That can affect edge-case tooling/tests, not security compromise — rely on CI.

If scanner and story disagreed: Here they don’t — workflow/subprocess hits are explained by full upstream delta and normal dev/test code, not by a minimal Dependabot manifest change being malicious.

Compatibility Analysis

Searching the codebase for direct packaging usage and reviewing dependency constraints.

1) Where packaging shows up

Area Role
pyproject.toml Direct dependency: packaging = ">=26.1" (line 70).
poetry.lock Resolved wheel/sdist for packaging (e.g. 26.1).
Application code Only packaging.version: Version (and InvalidVersion in chia/util/chia_version.py).

Files (excluding vendored .upstream-dependency):

from packaging.version import InvalidVersion, Version

- ```39:39:chia/full_node/full_node.py
from packaging.version import Version

from packaging.version import Version

- ```12:12:chia/farmer/farmer_api.py
from packaging.version import Version

from packaging.version import Version

- ```8:68:chia/cmds/dev/installers.py
import packaging.version
# ... packaging.version.Version(...) for CLI/installer checks

Uses: parse handshake / CLI version strings into Version, compare with literals (e.g. Version("0.0.35"), Version("2.6.0")), build short display strings via major / minor / micro / pre in chia_version.

Tests under chia/_tests/ mirror the same imports.


2) Overlap with 26.1 changes

No meaningful overlap.

26.1’s listed changes target markers (& / |), specifiers (PEP‑style ranges, SpecifierSet.*, prerelease/postrelease edge cases), wheel/tags/pylock, new modules (dependency_groups, direct_url, errors), parse_wheel_filename options, renaming format_full_version_format_full_version, etc.

Chia does not import specifiers, requirements, markers, tags/utils, or private helpers. Its usage is limited to Version / InvalidVersion parsing and ordering for simple protocol-style strings.

The comparison / normalization fixes (e.g. dev+local, infinity edge cases, ASCII local segments) could only matter if you depended on quirky version strings or pickled Version objects; Chia’s paths are straightforward comparisons on normal semver-like literals.


3) Risks / unknowns

  • Low: Tooling/other deps also use packaging; that’s normal and exercised by CI.
  • Niche: Extremely unusual version strings (huge ints, exotic locals) might parse or compare differently due to PEP alignment and bugfixes—unlikely for handshake/protocol checks.
  • No Chia code references the renamed private format_full_version.

4) Recommendation

Merge.

The repo already declares packaging >= 26.1; bumping the lockfile to 26.0 → 26.1 matches that and touches APIs Chia does not use beyond packaging.version, which stays stable for this usage.

Optional caveat for the PR thread: behavior of ** specifier-oriented** PEP edge cases changed in upstream, but that does not apply to current Chia call sites unless you later add specifier-based parsing.


Malware Scan Summary

  • Status: warn
  • Warn only mode: true
  • Changed upstream files scanned: 81
  • Resolution strategy: tag_range
  • Changed node/vendor paths: 0
  • Changed lockfiles: 0
  • Resolved upstream range: 3b77a26f5a27473ad3b08194d773f325d018a2d0..c1a88a3e035e8bfe47dbc957f4a2493e8a7b4f3c
  • Resolved refs: from=3b77a26f5a27473ad3b08194d773f325d018a2d0 to=c1a88a3e035e8bfe47dbc957f4a2493e8a7b4f3c
  • 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:1083 unicode :: ("Foo", "🕵️"),
  • tests/test_metadata.py:1085 unicode :: "Foo: 🕵️\n",
  • tests/test_tags.py:8 shell_process_spawn :: import subprocess
  • tests/test_tags.py:351 shell_process_spawn :: subprocess,
  • tests/test_tags.py:353 shell_process_spawn :: lambda *args, **kwargs: subprocess.CompletedProcess(
  • tests/test_musllinux.py:4 shell_process_spawn :: import subprocess
  • tests/test_musllinux.py:82 shell_process_spawn :: monkeypatch.setattr(_musllinux.subprocess, "run", run_recorder) # type: ignore[attr-defined]
  • tests/test_musllinux.py:91 shell_process_spawn :: stderr=subprocess.PIPE,
  • tasks/check_frozen_revs.py:49 shell_process_spawn :: stdout=asyncio.subprocess.PIPE,
  • tasks/check_frozen_revs.py:50 shell_process_spawn :: stderr=asyncio.subprocess.DEVNULL,
  • noxfile.py:15 shell_process_spawn :: import subprocess
  • noxfile.py:310 shell_process_spawn :: result = subprocess.run(
  • noxfile.py:461 shell_process_spawn :: result = subprocess.run(
  • noxfile.py:470 shell_process_spawn :: result = subprocess.run(
  • noxfile.py:480 shell_process_spawn :: result = subprocess.run(
  • noxfile.py:491 shell_process_spawn :: result = subprocess.run(
  • noxfile.py:514 shell_process_spawn :: subprocess.run(["git", "add", str(file)], check=False)
  • noxfile.py:515 shell_process_spawn :: subprocess.run(["git", "commit", "-m", f"Bump for {kind}"], check=False)
  • docs/conf.py:12 shell_process_spawn :: exec(f.read(), ABOUT)
  • src/packaging/tags.py:12 shell_process_spawn :: import subprocess

@coveralls-official
Copy link
Copy Markdown

Coverage Report for CI Build 25075868907

Coverage decreased (-0.01%) to 91.179%

Details

  • Coverage decreased (-0.01%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 23 coverage regressions across 10 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

23 previously-covered lines in 10 files lost coverage.

File Lines Losing Coverage Coverage
chia/wallet/wallet_node.py 4 86.68%
chia/rpc/rpc_server.py 3 90.94%
chia/server/node_discovery.py 3 80.56%
chia/server/server.py 3 85.56%
chia/data_layer/data_layer.py 2 85.68%
chia/full_node/full_node.py 2 87.59%
chia/_tests/core/test_farmer_harvester_rpc.py 2 98.06%
chia/timelord/timelord.py 2 73.08%
chia/_tests/core/util/test_file_keyring_synchronization.py 1 96.88%
chia/_tests/simulation/test_simulation.py 1 96.49%

Coverage Stats

Coverage Status
Relevant Lines: 117671
Covered Lines: 107458
Line Coverage: 91.32%
Relevant Branches: 11731
Covered Branches: 10530
Branch Coverage: 89.76%
Branches in Coverage %: Yes
Coverage Strength: 1.83 hits per line

💛 - Coveralls

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

Labels

Changed Required label for PR that categorizes merge commit message as "Changed" for changelog dependencies Pull requests that update a dependency file python Pull requests that update Python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants