Sourced from wheel's releases.
0.46.2
- Restored the
bdist_wheelcommand for compatibility withsetuptoolsolder than v70.1- Importing
wheel.bdist_wheelnow emits aFutureWarninginstead of aDeprecationWarning- Fixed
wheel unpackpotentially altering the permissions of files outside of the destination tree with maliciously crafted wheels (CVE-2026-24049)0.46.1
- Temporarily restored the
wheel.macosx_libfilemodule (#659)
Sourced from wheel's changelog.
Release Notes
0.46.2 (2026-01-22)
- Restored the
bdist_wheelcommand for compatibility withsetuptoolsolder than v70.1- Importing
wheel.bdist_wheelnow emits aFutureWarninginstead of aDeprecationWarning- Fixed
wheel unpackpotentially altering the permissions of files outside of the destination tree with maliciously crafted wheels (CVE-2026-24049)0.46.1 (2025-04-08)
- Temporarily restored the
wheel.macosx_libfilemodule ([#659](https://github.com/pypa/wheel/issues/659) <https://github.com/pypa/wheel/issues/659>_)0.46.0 (2025-04-03)
- Dropped support for Python 3.8
- Removed the
bdist_wheelsetuptools command implementation and entry point. Thewheel.bdist_wheelmodule is now just an alias tosetuptools.command.bdist_wheel, emitting a deprecation warning on import.- Removed vendored
packagingin favor of a run-time dependency on it- Made the
wheel.metadatamodule private (with a deprecation warning if it's imported- Made the
wheel.clipackage private (no deprecation warning)- Fixed an exception when calling the
convertcommand with an empty description field0.45.1 (2024-11-23)
- Fixed pure Python wheels converted from eggs and wininst files having the ABI tag in the file name
0.45.0 (2024-11-08)
Refactored the
convertcommand to not need setuptools to be installedDon't configure setuptools logging unless running
bdist_wheelAdded a redirection from
wheel.bdist_wheel.bdist_wheeltosetuptools.command.bdist_wheel.bdist_wheelto improve compatibility withsetuptools' latest fixes.Projects are still advised to migrate away from the deprecated module and import the
setuptools' implementation explicitly. (PR by@abravalheri)0.44.0 (2024-08-04)
- Canonicalized requirements in METADATA file (PR by Wim Jeantine-Glenn)
- Deprecated the
bdist_wheelmodule, as the code was migrated tosetuptools
... (truncated)
eba4036
Updated the version number for v0.46.2557fb54
Created a new release7a7d2de
Fixed security issue around wheel unpack (#675)41418fa
Fixed test failures due to metadata normalization changesc1d442b
[pre-commit.ci] pre-commit autoupdate (#674)0bac882
Update github actions environments (#673)be9f45b
[pre-commit.ci] pre-commit autoupdate (#667)6244f08
Update pre-commit ruff legacy alias (#668)15b7577
PEP 639 compliance (#670)fc8cb41
Revert "Removed redundant Python version from the publish workflow
(#666)"Sourced from packaging's releases.
26.0
Read about the performance improvements here: https://iscinumpy.dev/post/packaging-faster.
What's Changed
Features:
- PEP 751: support pylock by
@sbidoulin pypa/packaging#900- PEP 794: import name metadata by
@brettcannonin pypa/packaging#948- Support writing metadata by
@henryiiiin pypa/packaging#846- Support
__replace__forVersionby@henryiiiin pypa/packaging#1003- Support positional pattern matching for
VersionandSpecifierby@henryiiiin pypa/packaging#1004Behavior adaptations:
- PEP 440 handling of prereleases for
Specifier.contains,SpecifierSet.contains, andSpecifierSet.filterby@notatallshawin pypa/packaging#897- Handle PEP 440 edge case in
SpecifierSet.filterby@notatallshawin pypa/packaging#942- Adjust arbitrary equality intersection preservation in
SpecifierSetby@notatallshawin pypa/packaging#951- Return
Falseinstead of raising for.containswith invalid version by@Liam-DeVoein pypa/packaging#932- Support arbitrary equality on arbitrary strings for
SpecifierandSpecifierSet'sfilterandcontainsmethod. by@notatallshawin pypa/packaging#954- Only try to parse as
Versionon certain marker keys, returnFalseon unequal ordered comparsions by@JP-Ellisin pypa/packaging#939Fixes:
- Update
_hashwhen unpicklingTag()by@dholthin pypa/packaging#860- Correct comment and simplify implicit prerelease handling in
Specifier.prereleasesby@notatallshawin pypa/packaging#896- Use explicit
_GLibCVersionNamedTuplein_manylinuxby@cthoytin pypa/packaging#868- Detect invalid license expressions containing
()by@bwoodsendin pypa/packaging#879- Correct regex for metadata
'name'format by@diin pypa/packaging#925- Improve the message around expecting a semicolon by
@pradyunsgin pypa/packaging#833- Support nested parens in license expressions by
@Liam-DeVoein pypa/packaging#931- Add space before at symbol in
Requirementsstring by@henryiiiin pypa/packaging#953- A root logger use found by ruff LOG, use
packaginglogger instead by@henryiiiin pypa/packaging#965- Better support for subclassing
MarkerandRequirementby@henryiiiin pypa/packaging#1022- Normalize all extras, not just if it comes first by
@henryiiiin pypa/packaging#1024- Don't produce a broken repr if
Markerfails to construct by@henryiiiin pypa/packaging#1033Performance:
- Avoid recompiling regexes in the tokenizer for a 3x speedup by
@hauntsaninjain pypa/packaging#1019- Improve performance in
_manylinux.pyby@cthoytin pypa/packaging#869- Minor cleanups to
Versionby@bearomorphismin pypa/packaging#913- Skip redundant creation of
Versions in specifier comparison by@notatallshawin pypa/packaging#986- Cache
Specifier's Version by@notatallshawin pypa/packaging#985- Make
Versiona little faster by@henryiiiin pypa/packaging#987- Minor
Versionregex cleanup by@henryiiiin pypa/packaging#990- Faster regex on Python 3.11.5+ by
@henryiiiin pypa/packaging#988 and pypa/packaging#1055- Lazily calculate
_keyinVersionby@notatallshawin pypa/packaging#989 and regression forpackaging_legacyfixed by@henryiiiin pypa/packaging#1048- Faster
canonicalize_versionby@henryiiiin pypa/packaging#993- Use
fullmatchin a couple more places by@henryiiiin pypa/packaging#992
... (truncated)
Sourced from packaging's changelog.
26.0 - 2026-01-20
Features:
- PEP 751: support pylock (:pull:
900)- PEP 794: import name metadata (:pull:
948)- Support for writing metadata to a file (:pull:
846)- Support
__replace__on Version (:pull:1003)- Support positional pattern matching for
VersionandSpecifierSet(:pull:1004)Behavior adaptations:
- PEP 440 handling of prereleases for
Specifier.contains,SpecifierSet.contains, andSpecifierSet.filter(:pull:897)- Handle PEP 440 edge case in
SpecifierSet.filter(:pull:942)- Adjust arbitrary equality intersection preservation in
SpecifierSet(:pull:951)- Return
Falseinstead of raising for.containswith invalid version (:pull:932)- Support arbitrary equality on arbitrary strings for
SpecifierandSpecifierSet'sfilterandcontainsmethod. (:pull:954)- Only try to parse as
Versionon certain marker keys, returnFalseon unequal ordered comparisons (:pull:939)Fixes:
- Update
_hashwhen unpicklingTag()(:pull:860)- Correct comment and simplify implicit prerelease handling in
Specifier.prereleases(:pull:896)- Use explicit
_GLibCVersionNamedTuplein_manylinux(:pull:868)- Detect invalid license expressions containing
()(:pull:879)- Correct regex for metadata
'name'format (:pull:925)- Improve the message around expecting a semicolon (:pull:
833)- Support nested parens in license expressions (:pull:
931)- Add space before at symbol in
Requirementsstring (:pull:953)- A root logger use found, use a
packaginglogger instead (:pull:965)- Better support for subclassing
MarkerandRequirement(:pull:1022)- Normalize all extras, not just if it comes first (:pull:
1024)- Don't produce a broken repr if
Markerfails to construct (:pull:1033)Performance:
- Avoid recompiling regexes in the tokenizer for a 3x speedup (:pull:
1019)- Improve performance in
_manylinux.py(:pull:869)- Minor cleanups to
Version(:pull:913)- Skip redundant creation of
Version's in specifier comparison (:pull:986)- Cache the
Specifier'sVersion(:pull:985)- Make
Versiona little faster (:pull:987)- Minor
Versionregex cleanup (:pull:990)- Faster regex on Python 3.11.5+ for
Version(:pull:988, :pull:1055)- Lazily calculate
_keyinVersion(:pull:989, :pull:1048)- Faster
canonicalize_version(:pull:993)- Use
re.fullmatchin a couple more places (:pull:992, :pull:1029)- Use
mapinstead of generator (:pull:996)- Deprecate
._version(_Version, aNamedTuple) (:pull:995, :pull:1062)
</tr></table>
... (truncated)
3b77a26
Bump for release31371cc
docs: prepare for 26.0 final (#1063)9627a88
perf: dual replace (#1064)d5398b8
fix: restore ._version as a compat shim (#1062)3a7b600
Bump for developmentd4eefdc
Bump for release4618912
docs: prepare for 26.0rc3 (#1060)0cf1b41
ci: test on first public release of CPythons (#1056)716beb1
perf: 10% faster stripping zeros (#1058)350a230
fix: support CPython 3.11.0-3.11.4 and older PyPy3.11 (#1055)