chore(deps): update dependency packaging to v26 #39

Merged
realaravinth merged 1 commit from renovate/packaging-26.x into master 2026-06-20 19:05:48 +05:30
Member

This PR contains the following updates:

Package Change Age Confidence
packaging ==24.2 -> ==26.2 age confidence

Release Notes

pypa/packaging (packaging)

v26.2

Compare Source

What's Changed

Fixes:

Documentation:

Internal:

New Contributors

Full Changelog: https://github.com/pypa/packaging/compare/26.1...26.2

v26.1

Compare Source

Features:

Behavior adaptations:

Pylock (PEP 751) updates:

Fixes:

Performance:

Internal:

Documentation:

Benchmarks

Performance improvements since 26.0, from the new integrated benchmark suite:

uv run asv run 26.0..HEAD
Screenshot 2026-04-13 at 11 32 14 PM Screenshot 2026-04-13 at 11 32 43 PM

New Contributors

Full Changelog: https://github.com/pypa/packaging/compare/26.0...26.1

v26.0

Compare Source

Read about the performance improvements here: https://iscinumpy.dev/post/packaging-faster.

What's Changed

Features:

Behavior adaptations:

  • PEP 440 handling of prereleases for Specifier.contains, SpecifierSet.contains, and SpecifierSet.filter by @​notatallshaw in #​897
  • Handle PEP 440 edge case in SpecifierSet.filter by @​notatallshaw in #​942
  • Adjust arbitrary equality intersection preservation in SpecifierSet by @​notatallshaw in #​951
  • Return False instead of raising for .contains with invalid version by @​Liam-DeVoe in #​932
  • Support arbitrary equality on arbitrary strings for Specifier and SpecifierSet's filter and contains method. by @​notatallshaw in #​954
  • Only try to parse as Version on certain marker keys, return False on unequal ordered comparsions by @​JP-Ellis in #​939

Fixes:

Performance:

Type annotations:

Internal:

New Contributors

Since last RC

Fixes:

Performance:

Documentaiton:

Full Changelog: https://github.com/pypa/packaging/compare/26.0rc3...26.0

v25.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/pypa/packaging/compare/24.2...25.0


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [packaging](https://github.com/pypa/packaging) | `==24.2` -> `==26.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/packaging/26.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/packaging/24.2/26.2?slim=true) | --- ### Release Notes <details> <summary>pypa/packaging (packaging)</summary> ### [`v26.2`](https://github.com/pypa/packaging/releases/tag/26.2) [Compare Source](https://github.com/pypa/packaging/compare/26.1...26.2) #### What's Changed Fixes: - Fix incorrect sysconfig var name for pyemscripten by [@&#8203;ryanking13](https://github.com/ryanking13) in [#&#8203;1160](https://github.com/pypa/packaging/pull/1160) - Make `Version`, `Specifier`, `SpecifierSet`, `Tag`, `Marker`, and `Requirement` pickle-safe and backward-compatible with pickles created in 25.0-26.1 (including references to the removed `packaging._structures` module) by [@&#8203;eachimei](https://github.com/eachimei) and [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1163](https://github.com/pypa/packaging/pull/1163), [#&#8203;1168](https://github.com/pypa/packaging/pull/1168), [#&#8203;1170](https://github.com/pypa/packaging/pull/1170), and [#&#8203;1171](https://github.com/pypa/packaging/pull/1171) - fix: re-export ExceptionGroup for now by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1164](https://github.com/pypa/packaging/pull/1164) Documentation: - docs: add errors section and fix missing details by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1159](https://github.com/pypa/packaging/pull/1159) - docs(dev): document property-based test suite by [@&#8203;r266-tech](https://github.com/r266-tech) in [#&#8203;1167](https://github.com/pypa/packaging/pull/1167) - Fix typo in DirectUrl documentation by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;1169](https://github.com/pypa/packaging/pull/1169) - docs(specifiers): add is\_unsatisfiable() usage example by [@&#8203;r266-tech](https://github.com/r266-tech) in [#&#8203;1166](https://github.com/pypa/packaging/pull/1166) Internal: - Enable the auditor persona on zizmor by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1158](https://github.com/pypa/packaging/pull/1158) - Test new pickle guarantees by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1174](https://github.com/pypa/packaging/pull/1174) - Use native uv integration in rtd by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1175](https://github.com/pypa/packaging/pull/1175) #### New Contributors - [@&#8203;ryanking13](https://github.com/ryanking13) made their first contribution in [#&#8203;1160](https://github.com/pypa/packaging/pull/1160) - [@&#8203;eachimei](https://github.com/eachimei) made their first contribution in [#&#8203;1163](https://github.com/pypa/packaging/pull/1163) **Full Changelog**: <https://github.com/pypa/packaging/compare/26.1...26.2> ### [`v26.1`](https://github.com/pypa/packaging/releases/tag/26.1) [Compare Source](https://github.com/pypa/packaging/compare/26.0...26.1) Features: - ~~PEP 783: add handling for Emscripten wheel tags by [@&#8203;hoodmane](https://github.com/hoodmane) in [#&#8203;804](https://github.com/pypa/packaging/pull/804)~~ (old name used in implementation, will be fixed in next release) - PEP 803: add handling for the `abi3.abi3t` free-threading tag by [@&#8203;ngoldbaum](https://github.com/ngoldbaum) in [#&#8203;1099](https://github.com/pypa/packaging/pull/1099) - PEP 723: add `packaging.dependency_groups` module, based on the `dependency-groups` package by [@&#8203;sirosen](https://github.com/sirosen) in [#&#8203;1065](https://github.com/pypa/packaging/pull/1065) - Add the `packaging.direct_url` module by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;944](https://github.com/pypa/packaging/pull/944) - Add the `packaging.errors` module by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1071](https://github.com/pypa/packaging/pull/1071) - Add `SpecifierSet.is_unsatisfiable` using ranges (new internals that will be expanded in future versions) by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1119](https://github.com/pypa/packaging/pull/1119) - Add `create_compatible_tags_selector` to select compatible tags by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;1110](https://github.com/pypa/packaging/pull/1110) - Add a `key` argument to `SpecifierSet.filter()` by [@&#8203;frostming](https://github.com/frostming) in [#&#8203;1068](https://github.com/pypa/packaging/pull/1068) - Support `&` and `|` for `Marker`'s by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1146](https://github.com/pypa/packaging/pull/1146) - Normalize `Version.__replace__` and add `Version.from_parts` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1078](https://github.com/pypa/packaging/pull/1078) - Add an option to validate compressed tag set sort order in `parse_wheel_filename` by [@&#8203;r266-tech](https://github.com/r266-tech) in [#&#8203;1150](https://github.com/pypa/packaging/pull/1150) Behavior adaptations: - Narrow exclusion of pre-releases for `<V.postN` to match spec by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1140](https://github.com/pypa/packaging/pull/1140) - Narrow exclusion of post-releases for `>V` to match spec by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1141](https://github.com/pypa/packaging/pull/1141) - Rename `format_full_version` to `_format_full_version` to make it visibly private by [@&#8203;r266-tech](https://github.com/r266-tech) in [#&#8203;1125](https://github.com/pypa/packaging/pull/1125) - Restrict local version to ASCII by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1102](https://github.com/pypa/packaging/pull/1102) Pylock (PEP 751) updates: - Add pylock `select` function by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;1092](https://github.com/pypa/packaging/pull/1092) - Document pylock `select()` method and `PylockSelectError` by [@&#8203;r266-tech](https://github.com/r266-tech) in [#&#8203;1153](https://github.com/pypa/packaging/pull/1153) - Add `filename` property to `PackageSdist` and `PackageWheel`, more validation by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;1095](https://github.com/pypa/packaging/pull/1095) - Give preference to path over url by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;1128](https://github.com/pypa/packaging/pull/1128) - Validate name/version consistency in file names by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;1114](https://github.com/pypa/packaging/pull/1114) Fixes: - Fix `>` comparison for versions with dev+local segments by [@&#8203;veeceey](https://github.com/veeceey) in [#&#8203;1097](https://github.com/pypa/packaging/pull/1097) - Fix incorrect self-comparison for `InfinityType` and `NegativeInfinityType` by [@&#8203;bysiber](https://github.com/bysiber) in [#&#8203;1093](https://github.com/pypa/packaging/pull/1093) - Canonicalize when deduplicating specifiers in `SpecifierSet` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1109](https://github.com/pypa/packaging/pull/1109) - Fix charset error message formatting by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1121](https://github.com/pypa/packaging/pull/1121) - Handle the `key` parameter in `SpecifierSet.filter` when specifiers are empty and prerelease is `False` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1096](https://github.com/pypa/packaging/pull/1096) - Standardize inner components of `repr` output by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1090](https://github.com/pypa/packaging/pull/1090) - `Specifier`'s `===` uses original string, not normalized, when available by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1124](https://github.com/pypa/packaging/pull/1124) - Propagate int-max-str-digits `ValueError` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1155](https://github.com/pypa/packaging/pull/1155) Performance: - Add fast path for parsing simple versions (digits and dots only) by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1082](https://github.com/pypa/packaging/pull/1082) - Add fast path for `Version` to `Version` comparison by skipping `_key` property by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1083](https://github.com/pypa/packaging/pull/1083) - Cache `Version` hash value in dedicated slot by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1118](https://github.com/pypa/packaging/pull/1118) - Overhaul `_cmpkey` to remove use of custom objects by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1116](https://github.com/pypa/packaging/pull/1116) - Skip `__replace__` in Specifier comparison if not needed by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1081](https://github.com/pypa/packaging/pull/1081) - `SpecifierSet` use `tuple` instead of `frozenset` for `_specs` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1108](https://github.com/pypa/packaging/pull/1108) - Speed up complex `SpecifierSet` filtering by implementing cost-based ordering by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1105](https://github.com/pypa/packaging/pull/1105) - Speed up wildcard comparison by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1111](https://github.com/pypa/packaging/pull/1111) - Stream PEP440 filtering in `SpecifierSet.filter` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1076](https://github.com/pypa/packaging/pull/1076) - Add `__slots__` to `Marker` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1147](https://github.com/pypa/packaging/pull/1147) - Simply `Specifier` regex by [@&#8203;sirosen](https://github.com/sirosen) in [#&#8203;1106](https://github.com/pypa/packaging/pull/1106) - Skip using the hash property internally by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1115](https://github.com/pypa/packaging/pull/1115) Internal: - Add downstream testing by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1049](https://github.com/pypa/packaging/pull/1049) - Benchmarking suite by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1059](https://github.com/pypa/packaging/pull/1059) - Benchmark variance reduction by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1107](https://github.com/pypa/packaging/pull/1107) - Add property-based tests for PEP 440 by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1144](https://github.com/pypa/packaging/pull/1144) - Clean up a few `collections.namedtuple` in tests by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1070](https://github.com/pypa/packaging/pull/1070) - Do not reload the tags module in tests by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1152](https://github.com/pypa/packaging/pull/1152) - Limit `dir()` / tab-completion in REPL by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1011](https://github.com/pypa/packaging/pull/1011) - Add more `__all__`/`__dir__` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1069](https://github.com/pypa/packaging/pull/1069) - Cleanup pre-commit a bit by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1080](https://github.com/pypa/packaging/pull/1080) - Pin pre-commit file, use dependabot by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1133](https://github.com/pypa/packaging/pull/1133) - Remove sphinx-toolbox by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1135](https://github.com/pypa/packaging/pull/1135) - Use docs group, faster readthedocs by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1061](https://github.com/pypa/packaging/pull/1061) - Add free-threaded Python to CI by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1098](https://github.com/pypa/packaging/pull/1098) - Simplify combining `SpecifierSet.prereleases` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1073](https://github.com/pypa/packaging/pull/1073) - Use direct operator methods in `_compare_compatible` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1100](https://github.com/pypa/packaging/pull/1100) - Remove unnecessary if statement in `Specifier.prereleases` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1074](https://github.com/pypa/packaging/pull/1074) - Remove unneeded nesting in `Specifier.prereleases` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1072](https://github.com/pypa/packaging/pull/1072) Documentation: - Fix documentation: grammar, typos, formatting, and outdated references by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in [#&#8203;1084](https://github.com/pypa/packaging/pull/1084) - Fix versionadded for `Version.from_parts()` by [@&#8203;Jackenmen](https://github.com/Jackenmen) in [#&#8203;1134](https://github.com/pypa/packaging/pull/1134) - Document `&` and `|` operators for combining `Marker` objects by [@&#8203;r266-tech](https://github.com/r266-tech) in [#&#8203;1151](https://github.com/pypa/packaging/pull/1151) - Expand and clean up `Version` documentation by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1089](https://github.com/pypa/packaging/pull/1089) - Move license docs inline by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1131](https://github.com/pypa/packaging/pull/1131) - Move markers inline by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1104](https://github.com/pypa/packaging/pull/1104) - Move tags docs to inline by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1130](https://github.com/pypa/packaging/pull/1130) - Move utilities inline, like other modules by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1103](https://github.com/pypa/packaging/pull/1103) #### Benchmarks Performance improvements since 26.0, from the new integrated benchmark suite: ``` uv run asv run 26.0..HEAD ``` <img width="908" height="965" alt="Screenshot 2026-04-13 at 11 32 14 PM" src="https://github.com/user-attachments/assets/3bf63569-dbbf-4f34-9660-ede3cef1745d" /> <img width="908" height="479" alt="Screenshot 2026-04-13 at 11 32 43 PM" src="https://github.com/user-attachments/assets/f7906800-f6d9-4af6-a3f3-369b654b73e3" /> #### New Contributors - [@&#8203;veeceey](https://github.com/veeceey) made their first contribution in [#&#8203;1097](https://github.com/pypa/packaging/pull/1097) - [@&#8203;bysiber](https://github.com/bysiber) made their first contribution in [#&#8203;1093](https://github.com/pypa/packaging/pull/1093) - [@&#8203;sirosen](https://github.com/sirosen) made their first contribution in [#&#8203;1106](https://github.com/pypa/packaging/pull/1106) - [@&#8203;Jackenmen](https://github.com/Jackenmen) made their first contribution in [#&#8203;1134](https://github.com/pypa/packaging/pull/1134) - [@&#8203;ngoldbaum](https://github.com/ngoldbaum) made their first contribution in [#&#8203;1099](https://github.com/pypa/packaging/pull/1099) - [@&#8203;r266-tech](https://github.com/r266-tech) made their first contribution in [#&#8203;1151](https://github.com/pypa/packaging/pull/1151) - [@&#8203;hoodmane](https://github.com/hoodmane) made their first contribution in [#&#8203;804](https://github.com/pypa/packaging/pull/804) **Full Changelog**: <https://github.com/pypa/packaging/compare/26.0...26.1> ### [`v26.0`](https://github.com/pypa/packaging/releases/tag/26.0) [Compare Source](https://github.com/pypa/packaging/compare/25.0...26.0) Read about the performance improvements here: <https://iscinumpy.dev/post/packaging-faster>. #### What's Changed Features: - PEP 751: support pylock by [@&#8203;sbidoul](https://github.com/sbidoul) in [#&#8203;900](https://github.com/pypa/packaging/pull/900) - PEP 794: import name metadata by [@&#8203;brettcannon](https://github.com/brettcannon) in [#&#8203;948](https://github.com/pypa/packaging/pull/948) - Support writing metadata by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;846](https://github.com/pypa/packaging/pull/846) - Support `__replace__` for `Version` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1003](https://github.com/pypa/packaging/pull/1003) - Support positional pattern matching for `Version` and `Specifier` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1004](https://github.com/pypa/packaging/pull/1004) Behavior adaptations: - PEP 440 handling of prereleases for `Specifier.contains`, `SpecifierSet.contains`, and `SpecifierSet.filter` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;897](https://github.com/pypa/packaging/pull/897) - Handle PEP 440 edge case in `SpecifierSet.filter` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;942](https://github.com/pypa/packaging/pull/942) - Adjust arbitrary equality intersection preservation in `SpecifierSet` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;951](https://github.com/pypa/packaging/pull/951) - Return `False` instead of raising for `.contains` with invalid version by [@&#8203;Liam-DeVoe](https://github.com/Liam-DeVoe) in [#&#8203;932](https://github.com/pypa/packaging/pull/932) - Support arbitrary equality on arbitrary strings for `Specifier` and `SpecifierSet`'s `filter` and `contains` method. by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;954](https://github.com/pypa/packaging/pull/954) - Only try to parse as `Version` on certain marker keys, return `False` on unequal ordered comparsions by [@&#8203;JP-Ellis](https://github.com/JP-Ellis) in [#&#8203;939](https://github.com/pypa/packaging/pull/939) Fixes: - Update `_hash` when unpickling `Tag()` by [@&#8203;dholth](https://github.com/dholth) in [#&#8203;860](https://github.com/pypa/packaging/pull/860) - Correct comment and simplify implicit prerelease handling in `Specifier.prereleases` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;896](https://github.com/pypa/packaging/pull/896) - Use explicit `_GLibCVersion` `NamedTuple` in `_manylinux` by [@&#8203;cthoyt](https://github.com/cthoyt) in [#&#8203;868](https://github.com/pypa/packaging/pull/868) - Detect invalid license expressions containing `()` by [@&#8203;bwoodsend](https://github.com/bwoodsend) in [#&#8203;879](https://github.com/pypa/packaging/pull/879) - Correct regex for metadata `'name'` format by [@&#8203;di](https://github.com/di) in [#&#8203;925](https://github.com/pypa/packaging/pull/925) - Improve the message around expecting a semicolon by [@&#8203;pradyunsg](https://github.com/pradyunsg) in [#&#8203;833](https://github.com/pypa/packaging/pull/833) - Support nested parens in license expressions by [@&#8203;Liam-DeVoe](https://github.com/Liam-DeVoe) in [#&#8203;931](https://github.com/pypa/packaging/pull/931) - Add space before at symbol in `Requirements` string by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;953](https://github.com/pypa/packaging/pull/953) - A root logger use found by ruff LOG, use `packaging` logger instead by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;965](https://github.com/pypa/packaging/pull/965) - Better support for subclassing `Marker` and `Requirement` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1022](https://github.com/pypa/packaging/pull/1022) - Normalize all extras, not just if it comes first by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1024](https://github.com/pypa/packaging/pull/1024) - Don't produce a broken repr if `Marker` fails to construct by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1033](https://github.com/pypa/packaging/pull/1033) Performance: - Avoid recompiling regexes in the tokenizer for a 3x speedup by [@&#8203;hauntsaninja](https://github.com/hauntsaninja) in [#&#8203;1019](https://github.com/pypa/packaging/pull/1019) - Improve performance in `_manylinux.py` by [@&#8203;cthoyt](https://github.com/cthoyt) in [#&#8203;869](https://github.com/pypa/packaging/pull/869) - Minor cleanups to `Version` by [@&#8203;bearomorphism](https://github.com/bearomorphism) in [#&#8203;913](https://github.com/pypa/packaging/pull/913) - Skip redundant creation of `Version`s in specifier comparison by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;986](https://github.com/pypa/packaging/pull/986) - Cache `Specifier`'s Version by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;985](https://github.com/pypa/packaging/pull/985) - Make `Version` a little faster by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;987](https://github.com/pypa/packaging/pull/987) - Minor `Version` regex cleanup by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;990](https://github.com/pypa/packaging/pull/990) - Faster regex on Python 3.11.5+ by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;988](https://github.com/pypa/packaging/pull/988) and [#&#8203;1055](https://github.com/pypa/packaging/pull/1055) - Lazily calculate `_key` in `Version` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;989](https://github.com/pypa/packaging/pull/989) and regression for `packaging_legacy` fixed by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1048](https://github.com/pypa/packaging/pull/1048) - Faster `canonicalize_version` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;993](https://github.com/pypa/packaging/pull/993) - Use `fullmatch` in a couple more places by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;992](https://github.com/pypa/packaging/pull/992) - Use `fullmatch` for markers too by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1029](https://github.com/pypa/packaging/pull/1029) - Use `map` instead of generator by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;996](https://github.com/pypa/packaging/pull/996) - Deprecate `._version` (`_Version`, a `NamedTuple`) by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;995](https://github.com/pypa/packaging/pull/995) and [#&#8203;1062](https://github.com/pypa/packaging/pull/1062) - Avoid duplicate `Version` creation in `canonicalize_version` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;994](https://github.com/pypa/packaging/pull/994) - Add `__slots__` to `Version` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1001](https://github.com/pypa/packaging/pull/1001) - Add `__slots__` to `Specifier`s by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1002](https://github.com/pypa/packaging/pull/1002) - Add `__slots__` to `Node`s by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1032](https://github.com/pypa/packaging/pull/1032) - Use `version.__replace__` in specifier comparison by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;999](https://github.com/pypa/packaging/pull/999) - Use `_get_spec_version` in more places in `Specifier` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1005](https://github.com/pypa/packaging/pull/1005) - Pull `set` construction out of function by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1012](https://github.com/pypa/packaging/pull/1012) - Letter normalization dict for prereleases and the like by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1014](https://github.com/pypa/packaging/pull/1014) - Avoid normalizing extras again when comparing by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1028](https://github.com/pypa/packaging/pull/1028) - Speed up `Version.__str__` by about 10% by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;997](https://github.com/pypa/packaging/pull/997) - Increase the performance of `canonicalize_name` by avoiding a regex by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1030](https://github.com/pypa/packaging/pull/1030), [#&#8203;1047](https://github.com/pypa/packaging/pull/1047), and [#&#8203;1064](https://github.com/pypa/packaging/pull/1064) - Faster zero stripping by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1058](https://github.com/pypa/packaging/pull/1058) Type annotations: - Fix a type annotation by [@&#8203;brettcannon](https://github.com/brettcannon) in [#&#8203;907](https://github.com/pypa/packaging/pull/907) - Fix tags return type in `parse_wheel_filename` docs by [@&#8203;ncoghlan](https://github.com/ncoghlan) in [#&#8203;973](https://github.com/pypa/packaging/pull/973) - Add type hint for `_version` in `.version.Version` by [@&#8203;brettcannon](https://github.com/brettcannon) in [#&#8203;927](https://github.com/pypa/packaging/pull/927) - Changed static type annotations in prereleases setter method in `specifier.py` by [@&#8203;subhajitsaha01](https://github.com/subhajitsaha01) in [#&#8203;930](https://github.com/pypa/packaging/pull/930) - Statically type the tests by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;982](https://github.com/pypa/packaging/pull/982) Internal: - Test and declare support Python 3.14 by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;901](https://github.com/pypa/packaging/pull/901) - Modernize and speed up tests on Python 3.14 by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;903](https://github.com/pypa/packaging/pull/903) - Change our license metadata to use an SPDX license expression by [@&#8203;cdce8p](https://github.com/cdce8p) in [#&#8203;881](https://github.com/pypa/packaging/pull/881) - No need for `license-files` by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in [#&#8203;924](https://github.com/pypa/packaging/pull/924) - Update mypy by [@&#8203;hauntsaninja](https://github.com/hauntsaninja) in [#&#8203;891](https://github.com/pypa/packaging/pull/891) - Some config updates by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;902](https://github.com/pypa/packaging/pull/902) - Add spell check and rst check by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;904](https://github.com/pypa/packaging/pull/904) - Clean up ruff ignores by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;905](https://github.com/pypa/packaging/pull/905) - Update example for env marker `python_version` by [@&#8203;trim21](https://github.com/trim21) in [#&#8203;908](https://github.com/pypa/packaging/pull/908) - Move codespell configuration into pyproject.toml by [@&#8203;yarikoptic](https://github.com/yarikoptic) in [#&#8203;910](https://github.com/pypa/packaging/pull/910) - Check warning a little more precisely by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;837](https://github.com/pypa/packaging/pull/837) - Speed up mypy a little by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;836](https://github.com/pypa/packaging/pull/836) - Apply ruff/flake8-pyi rules (PYI) by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in [#&#8203;835](https://github.com/pypa/packaging/pull/835) - Better local runs for codespell by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;911](https://github.com/pypa/packaging/pull/911) - Remove outdated/confusing Gist link by [@&#8203;stefan6419846](https://github.com/stefan6419846) in [#&#8203;921](https://github.com/pypa/packaging/pull/921) - Fix docs and docs ci after [#&#8203;897](https://github.com/pypa/packaging/issues/897) landed by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;926](https://github.com/pypa/packaging/pull/926) - Run twine-check on push in CI by [@&#8203;EpicWink](https://github.com/EpicWink) in [#&#8203;922](https://github.com/pypa/packaging/pull/922) - `ruff` was renamed `ruff-check` in pre-commit by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;933](https://github.com/pypa/packaging/pull/933) - Fix incorrectly implicitly concatenated string in specifiers test by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;946](https://github.com/pypa/packaging/pull/946) - Simplify conditional by [@&#8203;ofek](https://github.com/ofek) in [#&#8203;949](https://github.com/pypa/packaging/pull/949) - Modernize nox, use dependency-groups for tests by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;952](https://github.com/pypa/packaging/pull/952) - Add more checks that don't affect anything by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;957](https://github.com/pypa/packaging/pull/957) - Enable Ruff ISC rule by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;959](https://github.com/pypa/packaging/pull/959) - Ruff code FLY by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;963](https://github.com/pypa/packaging/pull/963) - pytest `log_level` is better than `log_cli_level` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;956](https://github.com/pypa/packaging/pull/956) - Ruff code TRY by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;961](https://github.com/pypa/packaging/pull/961) - Add the ruff PL checks by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;964](https://github.com/pypa/packaging/pull/964) - Enable Ruff ARG rules by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;958](https://github.com/pypa/packaging/pull/958) - Ruff PT code (pytest) by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;960](https://github.com/pypa/packaging/pull/960) - Add ruff DTZ by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;968](https://github.com/pypa/packaging/pull/968) - Add ruff BLE by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;967](https://github.com/pypa/packaging/pull/967) - Add the ruff SIM checks by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;966](https://github.com/pypa/packaging/pull/966) - Adding ruff PERF by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;969](https://github.com/pypa/packaging/pull/969) - Move some config into coverage config by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;971](https://github.com/pypa/packaging/pull/971) - Check ruff C4 by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;962](https://github.com/pypa/packaging/pull/962) - Adding ruff T20 by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;972](https://github.com/pypa/packaging/pull/972) - Add a tests pass job by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;977](https://github.com/pypa/packaging/pull/977) - Add ruff TC by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;980](https://github.com/pypa/packaging/pull/980) - Adding part of ruff RET by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;979](https://github.com/pypa/packaging/pull/979) - Reorder mypy check by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;983](https://github.com/pypa/packaging/pull/983) - Enable ruff ALL by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;984](https://github.com/pypa/packaging/pull/984) - Link back to repo/source in furo by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;991](https://github.com/pypa/packaging/pull/991) - Add case insensitivity tests for arbitrary equality by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;975](https://github.com/pypa/packaging/pull/975) - Synchronize documentation and code for markers by [@&#8203;zahlman](https://github.com/zahlman) in [#&#8203;1008](https://github.com/pypa/packaging/pull/1008) - Use `partition` in `_parse_project_urls` by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1013](https://github.com/pypa/packaging/pull/1013) - auto-skip the dependabot PRs in the release changelog generation by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1016](https://github.com/pypa/packaging/pull/1016) - Update unreleased section in changelog by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1017](https://github.com/pypa/packaging/pull/1017) - Fix PR role to match extlinks by [@&#8203;hugovk](https://github.com/hugovk) in [#&#8203;1020](https://github.com/pypa/packaging/pull/1020) - Mention new parts in README by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1023](https://github.com/pypa/packaging/pull/1023) - Replace a couple of asserts with else by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1027](https://github.com/pypa/packaging/pull/1027) - Simplify and/or check a little more by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1031](https://github.com/pypa/packaging/pull/1031) - Use slim runner for all check by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1021](https://github.com/pypa/packaging/pull/1021) - Use typos instead of codespell by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1015](https://github.com/pypa/packaging/pull/1015) - Update changelog with recent additions by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1034](https://github.com/pypa/packaging/pull/1034) - Publish to PyPI via GitHub CI by [@&#8203;EpicWink](https://github.com/EpicWink) in [#&#8203;893](https://github.com/pypa/packaging/pull/893) - Use prek for faster pre-commit lint step by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1037](https://github.com/pypa/packaging/pull/1037) - Add help text to noxfile by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1038](https://github.com/pypa/packaging/pull/1038) - Update licenses to 3.27 by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1036](https://github.com/pypa/packaging/pull/1036) - Use relative import in `packaging.licenses` by [@&#8203;notatallshaw](https://github.com/notatallshaw) in [#&#8203;1039](https://github.com/pypa/packaging/pull/1039) - Add zizmor and tighten up CI by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1035](https://github.com/pypa/packaging/pull/1035) - Fix release script by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1040](https://github.com/pypa/packaging/pull/1040) - Fix using a dev version (again) by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1041](https://github.com/pypa/packaging/pull/1041) - Fix type hint of function used with `contextlib.contextmanager` by [@&#8203;SpecLad](https://github.com/SpecLad) in [#&#8203;1046](https://github.com/pypa/packaging/pull/1046) - Always run tests by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1044](https://github.com/pypa/packaging/pull/1044) - Fix a changelog number by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1042](https://github.com/pypa/packaging/pull/1042) - Fix the publish job by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1043](https://github.com/pypa/packaging/pull/1043) - Get the correct tag on publish by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1045](https://github.com/pypa/packaging/pull/1045) - Test on first public release of CPython 3.11 and newer by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1056](https://github.com/pypa/packaging/pull/1056) - Fix publication job (again) by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1051](https://github.com/pypa/packaging/pull/1051) - Use `actionlint` to check CI workflows by [@&#8203;miketheman](https://github.com/miketheman) in [#&#8203;1052](https://github.com/pypa/packaging/pull/1052) - Fix formatting of distribution types in metadata.rst by [@&#8203;brettcannon](https://github.com/brettcannon) in [#&#8203;1053](https://github.com/pypa/packaging/pull/1053) #### New Contributors - [@&#8203;cdce8p](https://github.com/cdce8p) made their first contribution in [#&#8203;881](https://github.com/pypa/packaging/pull/881) - [@&#8203;dholth](https://github.com/dholth) made their first contribution in [#&#8203;860](https://github.com/pypa/packaging/pull/860) - [@&#8203;trim21](https://github.com/trim21) made their first contribution in [#&#8203;908](https://github.com/pypa/packaging/pull/908) - [@&#8203;yarikoptic](https://github.com/yarikoptic) made their first contribution in [#&#8203;910](https://github.com/pypa/packaging/pull/910) - [@&#8203;cthoyt](https://github.com/cthoyt) made their first contribution in [#&#8203;868](https://github.com/pypa/packaging/pull/868) - [@&#8203;bwoodsend](https://github.com/bwoodsend) made their first contribution in [#&#8203;879](https://github.com/pypa/packaging/pull/879) - [@&#8203;stefan6419846](https://github.com/stefan6419846) made their first contribution in [#&#8203;921](https://github.com/pypa/packaging/pull/921) - [@&#8203;bearomorphism](https://github.com/bearomorphism) made their first contribution in [#&#8203;913](https://github.com/pypa/packaging/pull/913) - [@&#8203;EpicWink](https://github.com/EpicWink) made their first contribution in [#&#8203;922](https://github.com/pypa/packaging/pull/922) - [@&#8203;Liam-DeVoe](https://github.com/Liam-DeVoe) made their first contribution in [#&#8203;932](https://github.com/pypa/packaging/pull/932) - [@&#8203;subhajitsaha01](https://github.com/subhajitsaha01) made their first contribution in [#&#8203;930](https://github.com/pypa/packaging/pull/930) - [@&#8203;ncoghlan](https://github.com/ncoghlan) made their first contribution in [#&#8203;973](https://github.com/pypa/packaging/pull/973) - [@&#8203;zahlman](https://github.com/zahlman) made their first contribution in [#&#8203;1008](https://github.com/pypa/packaging/pull/1008) - [@&#8203;JP-Ellis](https://github.com/JP-Ellis) made their first contribution in [#&#8203;939](https://github.com/pypa/packaging/pull/939) #### Since last RC Fixes: - Restore `._version` as a compat shim by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1062](https://github.com/pypa/packaging/pull/1062) Performance: - Dual replace by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1064](https://github.com/pypa/packaging/pull/1064) Documentaiton: - Prepare for 26.0 final by [@&#8203;henryiii](https://github.com/henryiii) in [#&#8203;1063](https://github.com/pypa/packaging/pull/1063) **Full Changelog**: <https://github.com/pypa/packaging/compare/26.0rc3...26.0> ### [`v25.0`](https://github.com/pypa/packaging/releases/tag/25.0) [Compare Source](https://github.com/pypa/packaging/compare/24.2...25.0) #### What's Changed - Re-add a test for Unicode file name parsing by [@&#8203;Siddhesh-Agarwal](https://github.com/Siddhesh-Agarwal) in [#&#8203;863](https://github.com/pypa/packaging/pull/863) - Upgrade to ruff 0.9.1 by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in [#&#8203;865](https://github.com/pypa/packaging/pull/865) - Add support for PEP 738 Android tags by [@&#8203;mhsmith](https://github.com/mhsmith) in [#&#8203;880](https://github.com/pypa/packaging/pull/880) - feat(markers): support 'extras' and 'dependency\_groups' markers by [@&#8203;frostming](https://github.com/frostming) in [#&#8203;888](https://github.com/pypa/packaging/pull/888) #### New Contributors - [@&#8203;Siddhesh-Agarwal](https://github.com/Siddhesh-Agarwal) made their first contribution in [#&#8203;863](https://github.com/pypa/packaging/pull/863) - [@&#8203;mhsmith](https://github.com/mhsmith) made their first contribution in [#&#8203;880](https://github.com/pypa/packaging/pull/880) - [@&#8203;frostming](https://github.com/frostming) made their first contribution in [#&#8203;888](https://github.com/pypa/packaging/pull/888) **Full Changelog**: <https://github.com/pypa/packaging/compare/24.2...25.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi41Mi44IiwidXBkYXRlZEluVmVyIjoiNDIuNTIuOCIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6WyJyZW5vdmF0ZS1ib3QiXX0=-->
chore(deps): update dependency packaging to v26
All checks were successful
ci/woodpecker/pull_request_metadata/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
574cc16a5e
renovate-bot force-pushed renovate/packaging-26.x from 574cc16a5e
All checks were successful
ci/woodpecker/pull_request_metadata/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
to 5c447f17a8
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2026-06-19 22:09:44 +05:30
Compare
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
mCaptcha/mcaptcha-api-py!39
No description provided.